數(shù)據(jù)庫優(yōu)化

數(shù)據(jù)庫優(yōu)化主要步驟:

先通過mysql的命令定位到慢查詢
使用explain分析慢查詢
然后根據(jù)具體的情況考慮使用具體的優(yōu)化方案進行優(yōu)化茸塞,單機優(yōu)化方案常用的是使用索引和優(yōu)化sql語句捐腿,多機方案常用的是集群和分布式滞详,其他方案是使用redis緩存和ES全文檢索迅腔。

1.定位慢查詢

mysql默認是10s是慢查詢, 可以修改配置文件或者通過sql語句修改敞咧。
可以通過命令查看到有多少條慢查詢(show status like 'uptime')孽江。
開啟全局慢查詢?nèi)罩荆ゲ榭磎ysql的日志文件或者將慢查詢的結(jié)果輸出到表中來找到是哪條sql引起的問題宣鄙。

2.分析慢查詢

使用explain關(guān)鍵字查看sql運行時是否用創(chuàng)建索引袍镀,主要關(guān)注的是type和key,判斷是否設(shè)置了索引框冀,如果設(shè)置了索引,看索引是否生效敏簿。
如果有存在查詢被鎖住的情況明也,使用showprocesslist可以查看sql執(zhí)行情況,判斷是否被鎖

3.優(yōu)化

單機優(yōu)化

3nf(三范式) 是什么惯裕?

①數(shù)據(jù)庫的列不能再進行拆分成其他幾列
②數(shù)據(jù)庫一行數(shù)據(jù)通常由一個主鍵來維護
③如果一個表中的數(shù)據(jù)能夠從其他表中推導(dǎo)出來温数,不需要使用冗余字段

表設(shè)計的時候:

1.根據(jù)情況使用冗余字段來減少表的JOIN,提高sql執(zhí)行效率蜻势。 比如我們空間的相冊功能撑刺。相冊一個表,相冊中的照片一個表握玛。相冊表里面有生活照和風(fēng)景照字段够傍,再冗余一個數(shù)量字段來表示該類照片的總數(shù)。

上面當我們存入照片時冗余字段的總數(shù)也要改變挠铲,引發(fā)的數(shù)據(jù)更新問題解決辦法:

①多條sql (每次存入相片的時候同時也使用sql語句去增加冗余字段的數(shù)量)
②觸發(fā)器(使用數(shù)據(jù)庫的觸發(fā)器冕屯,把觸發(fā)條件設(shè)置為每當照片發(fā)生改變時去執(zhí)行相應(yīng)的操作就可以了)

2.選擇合適的存儲引擎myisam 或者innodb,如果表對事務(wù)要求不高拂苹,同時是以查詢和添加為主的安聘,我們考慮使用myisam存儲引擎. 比如貼吧的發(fā)帖表,回復(fù)表。對事務(wù)要求高浴韭,保存的數(shù)據(jù)都是重要數(shù)據(jù)丘喻,我們建議使用INNODB,比如訂單表,賬號表.


myisam 和innodb的區(qū)別念颈?

myisam 和innodb都是存儲引擎泉粉。
myisam不支持事務(wù),innodb支持事務(wù)
myisam是表鎖舍肠,innodb是行鎖
myisam支持全文索引搀继,innodb不支持
MyISAM查詢和添加的速度快,INNODB速度慢


mysql的索引

索引分類

主鍵索引 :當我們設(shè)置某個列為主鍵的時候后翠语,數(shù)據(jù)庫就會給該列創(chuàng)建索引叽躯。非空且唯一
普通索引 :設(shè)置任意一個字段為索引,允許有重復(fù)的值出現(xiàn)肌括。
唯一索引 :跟普通索引一樣点骑,只是不允許有重復(fù)的值出現(xiàn),比如字段里面的電話 身份證號等
全文索引 :用來對表中的文本域進行索引谍夭,全文索引只能對myisam支持黑滴,innodb不支持全文索引

其他分類

聚集索引 :數(shù)據(jù)的索引和索引的結(jié)構(gòu)在一起,比如innodb的主鍵索引
非聚集索引 :數(shù)據(jù)的索引和索引的結(jié)構(gòu)是分開的紧索,葉子節(jié)點儲存的是數(shù)據(jù)在磁盤上的地址袁辈。比如myisam的主鍵索引。

主鍵索引 :innodb的主鍵索引和輔助索引


image.png

輔助索引 :mysiam的主鍵索引和輔助索引


image.png

普通索引(單列索引) :該索引只在一個列上面創(chuàng)建
聯(lián)合索引(多列索引): 該索引在多個列上面創(chuàng)建 (注意最左匹配原則)

innodb索引結(jié)構(gòu)的特點:

B+tree的特點
它是多叉樹珠漂,每次查詢都要走到子節(jié)點晚缩,效率比較穩(wěn)定。
它葉子節(jié)點存儲的是key和數(shù)據(jù)媳危,非葉子節(jié)點存儲的是key 荞彼,可以充分利用每個子節(jié)點的儲存空間為16KB,可以儲存更多的key,這樣可以降低B+樹的層高待笑,查詢的時候效率比較高
葉子節(jié)點儲存完整的數(shù)據(jù)鸣皂,葉子節(jié)點是有序的,適合范圍查詢暮蹂。

myisam索引結(jié)構(gòu)的特點

myisam的數(shù)據(jù)和索引結(jié)構(gòu)是分開的寞缝,葉子節(jié)點儲存的是數(shù)據(jù)在磁盤上的地址

sql優(yōu)化技巧:

導(dǎo)致索引失效的一些寫法
創(chuàng)建索引的原則
分頁數(shù)據(jù)偏移量較大時的解決方案
小表驅(qū)動大表

多機優(yōu)化

主從同步 主庫從庫讀寫分離 binlog relaylog

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仰泻,隨后出現(xiàn)的幾起案子第租,更是在濱河造成了極大的恐慌,老刑警劉巖我纪,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慎宾,死亡現(xiàn)場離奇詭異丐吓,居然都是意外死亡,警方通過查閱死者的電腦和手機趟据,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門妨马,熙熙樓的掌柜王于貴愁眉苦臉地迎上來下愈,“玉大人劣像,你說我怎么就攤上這事项玛。” “怎么了咳促?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵稚新,是天一觀的道長。 經(jīng)常有香客問我跪腹,道長褂删,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任冲茸,我火速辦了婚禮屯阀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘轴术。我一直安慰自己难衰,他們只是感情好,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布逗栽。 她就那樣靜靜地躺著盖袭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪彼宠。 梳的紋絲不亂的頭發(fā)上鳄虱,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音兵志,去河邊找鬼醇蝴。 笑死宣肚,一個胖子當著我的面吹牛想罕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播霉涨,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼按价,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了笙瑟?” 一聲冷哼從身側(cè)響起楼镐,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎往枷,沒想到半個月后框产,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凄杯,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年秉宿,在試婚紗的時候發(fā)現(xiàn)自己被綠了戒突。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡描睦,死狀恐怖膊存,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忱叭,我是刑警寧澤隔崎,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站韵丑,受9級特大地震影響爵卒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜埂息,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一技潘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧千康,春花似錦享幽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至豪椿,卻和暖如春奔坟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搭盾。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工咳秉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鸯隅。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓澜建,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝌以。 傳聞我的和親對象是個殘疾皇子炕舵,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 微信版的原文轉(zhuǎn)載出處 文章摘要:一個小小的MySQL數(shù)據(jù)庫B-Tree索引可能會帶來意想不到的性能優(yōu)化提升…… 一...
    癲狂俠閱讀 2,029評論 0 22
  • 1.存儲引擎的選擇(MyISAM和Innodb) 存儲引擎:MySQL中的數(shù)據(jù)、索引以及其他對象是如何存儲的跟畅,是一...
    不_一閱讀 135評論 0 1
  • 淺談數(shù)據(jù)庫優(yōu)化 在面試的時候經(jīng)常會被問到數(shù)據(jù)庫如何優(yōu)化的咽筋?面試的時候最擔(dān)心遇到這種寬泛的問題。如果你直接說:“建索...
    樂浩beyond閱讀 1,884評論 0 21
  • 表情是什么徊件,我認為表情就是表現(xiàn)出來的情緒奸攻。表情可以傳達很多信息蒜危。高興了當然就笑了,難過就哭了睹耐。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,454評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者舰褪,不喜歡去冒險,但是人生放棄了冒險疏橄,也就放棄了無數(shù)的可能占拍。 ...
    yichen大刀閱讀 6,041評論 0 4