day08(上周復(fù)習(xí)+存儲(chǔ)引擎下)

1蕾殴、上周復(fù)習(xí)

1.1彭羹、索引

1.1.1黄伊、聚集索引構(gòu)建B樹的過(guò)程

1.1.2、輔助索引構(gòu)建B樹的過(guò)程

1.1.3派殷、面試題簡(jiǎn)易回答

1)一張表只能有一個(gè)聚集索引还最,最好是自增的數(shù)字列
2)聚集索引葉子節(jié)點(diǎn)有序存儲(chǔ)的整行數(shù)據(jù)
3)輔助索引一個(gè)表可以有多個(gè)
4)輔助索引葉子節(jié)點(diǎn)存儲(chǔ)的是索引列的有序值+此列值的主鍵值

1.1.4、輔助索引細(xì)分

1)單列輔助索引
2)多列聯(lián)合索引
      --- select xxxx  from   where  a   b   c 都是等值查詢愈腾,建索引有什么好的建議
       1.考慮聯(lián)合索引
       2.排列問題憋活,唯一值多的放在
        alter table t1  add idx(c,b,a)
        select count(distinct a) from t1;
        為什么岂津?
        優(yōu)化器會(huì)自動(dòng)按照索引建立的順序虱黄,自動(dòng)排列where條件的順序,前提都是等值或者in的吮成。
        如果出現(xiàn)其他方式條件,比如:
出現(xiàn)了> < 或者group by  order by 
        怎么判斷聯(lián)合索引帶來(lái)的優(yōu)化效果橱乱?
         1.看執(zhí)行計(jì)劃
         2.key_len 
3)唯一索引

1.1.5、索引樹高度問題(索引樹高度受哪些原因影響粱甫?)開發(fā)規(guī)范

1)數(shù)據(jù)類型:char和varchar  enum
2)   數(shù)據(jù)量級(jí)問題:分庫(kù)泳叠、分表、分布式
3)索引列值長(zhǎng)度:前綴索引

1.2茶宵、explain(desc)重點(diǎn)回顧

1.2.1危纫、你在你們公司做過(guò)哪些優(yōu)化(mysql)?

1)我在公司主要是配合開發(fā)和業(yè)務(wù)人員,進(jìn)行SQL優(yōu)化和索引優(yōu)化這塊的工作
2)我主要是針對(duì)索引優(yōu)化种蝶,這塊做的比較多
3)我一般都是針對(duì)兩個(gè)數(shù)據(jù)庫(kù)工具進(jìn)行配優(yōu)化
4)第一個(gè)就是slowlog(自動(dòng)收集慢語(yǔ)句)契耿,第二個(gè)工具就是explain
5)我通過(guò)之前做過(guò)的小案列來(lái)簡(jiǎn)單說(shuō)明下我的優(yōu)化思路
6)explain(desc)使用場(chǎng)景(面試題)
題目意思:我們公司業(yè)務(wù)慢,請(qǐng)你從數(shù)據(jù)庫(kù)的角度分析原因
       1螃征、MySQL突然出現(xiàn)性能問題搪桂,我總結(jié)有兩種情況:
               1)應(yīng)急性的慢:突然夯住
                  應(yīng)急情況:數(shù)據(jù)庫(kù)夯住(卡了盯滚,資源耗盡)
                  處理過(guò)程:
                   1踢械、show processlist獲取導(dǎo)致數(shù)據(jù)庫(kù)hang住的SQL語(yǔ)句
                   2、explain,分析SQL的執(zhí)行計(jì)劃魄藕,檢查有沒有走索引内列,索引的類型情況
                   3、建索引背率,改語(yǔ)句
               2)一段時(shí)間的慢(持續(xù)性的): 
                   1德绿、記錄慢日志slowlog,分析slowlog
                   2、explain,分析SQL的執(zhí)行計(jì)劃退渗,檢查有沒有走索引移稳,索引的類型情況
                   3、建索引会油,改語(yǔ)句
7个粱、另外我還做一步存儲(chǔ)引擎方面的優(yōu)化
   我們有個(gè)業(yè)務(wù)是插入類的操作比較多,做過(guò)一個(gè)存儲(chǔ)引擎方面的優(yōu)化
    將innodb替換成tokudb
    主要說(shuō)說(shuō)為什么會(huì)使用tokudb


1.3翻翩、存儲(chǔ)引擎

1.3.1都许、innodb存儲(chǔ)引擎核心特性

事務(wù)
外鍵
熱備份
MVCC
CSR

1.3.2、表空間管理

alter table tb1 discard tablespace;
alter table tb1 import tablespace;

1.3.3嫂冻、事務(wù)特性

A   原子性
C   一致性
I   隔離性
D   持久性

1.3.4胶征、redo在ACID中的作用

重做日志,前滾日志桨仿。主要完成ACID中的D特性睛低,對(duì)AC也有一定的作用
存什么?
內(nèi)存數(shù)據(jù)頁(yè)變化的過(guò)程

1.3.5服傍、UNDO在ACID中的作用

回滾日志钱雷,撤銷日志。主要完成ACID中的D吹零,對(duì)CI也有一定作用

1.3.6罩抗、redo-CSR前滾

MySQL : 在啟動(dòng)時(shí),必須保證redo日志文件和數(shù)據(jù)文件LSN必須一致, 如果不一致就會(huì)觸發(fā)CSR,最終保證一致
情況一:
我們做了一個(gè)事務(wù),begin;update;commit.
1.在begin ,會(huì)立即分配一個(gè)TXID=tx_01.
2.update時(shí),會(huì)將需要修改的數(shù)據(jù)頁(yè)(dp_01,LSN=101),加載到data buffer中
3.DBWR線程,會(huì)進(jìn)行dp_01數(shù)據(jù)頁(yè)修改更新,并更新LSN=102
4.LOGBWR日志寫線程,會(huì)將dp_01數(shù)據(jù)頁(yè)的變化+LSN+TXID存儲(chǔ)到redobuffer
5. 執(zhí)行commit時(shí),LGWR日志寫線程會(huì)將redobuffer信息寫入redolog日志文件中,基于WAL原則,
在日志完全寫入磁盤后,commit命令才執(zhí)行成功,(會(huì)將此日志打上commit標(biāo)記)
6.假如此時(shí)宕機(jī),內(nèi)存臟頁(yè)沒有來(lái)得及寫入磁盤,內(nèi)存數(shù)據(jù)全部丟失
7.MySQL再次重啟時(shí),必須要redolog和磁盤數(shù)據(jù)頁(yè)的LSN是一致的.但是,此時(shí)dp_01,TXID=tx_01磁盤是LSN=101,dp_01,TXID=tx_01,redolog中LSN=102
MySQL此時(shí)無(wú)法正常啟動(dòng),MySQL觸發(fā)CSR.在內(nèi)存追平LSN號(hào),觸發(fā)ckpt,將內(nèi)存數(shù)據(jù)頁(yè)更新到磁盤,從而保證磁盤數(shù)據(jù)頁(yè)和redolog LSN一值.這時(shí)MySQL正長(zhǎng)啟動(dòng)
以上的工作過(guò)程,我們把它稱之為基于REDO的"前滾操作"

1.3.7、undo-CSR回滾

2.鎖介紹

2.1灿椅、介紹

鎖定的意思套蒂,提供的是ACID中I方面的功能钞支。需要配合undo+隔離級(jí)別一起來(lái)實(shí)現(xiàn)

2.2、INNODB鎖級(jí)別

行級(jí)鎖

2.3操刀、擴(kuò)展內(nèi)容

Next   LOCK  
GAP   LOCK
悲觀鎖:
樂觀鎖:
工作中(優(yōu)化章節(jié)):需要排查鎖的爭(zhēng)用伸辟、鎖等待、死鎖

3馍刮、事務(wù)的隔離級(jí)別

影響到數(shù)據(jù)的讀取信夫,默認(rèn)的級(jí)別是  RR模式。
transaction_isolation    隔離級(jí)別(參數(shù))
負(fù)責(zé)的是卡啰,MVCC静稻,讀一致性問題



RR級(jí)別:解決了不可重復(fù)讀問題+幻讀的現(xiàn)象
        不可重復(fù)讀問題是由undo的快照技術(shù)來(lái)解決。
       幻讀現(xiàn)象是由:MVCC+GAP+next-lock
RC級(jí)別:讀已提交匈辱,可能出現(xiàn)幻讀振湾,可以防止臟讀
RU:讀未提交,可臟讀亡脸,一般不允許出現(xiàn)
SR:可串行化押搪,可以防止死鎖,但是并發(fā)事務(wù)性能較差


補(bǔ)充: 在RC級(jí)別下,可以減輕GAP+NextLock鎖的問題,但是會(huì)出現(xiàn)幻讀現(xiàn)象,一般在為了讀一致性會(huì)在正常
select后添加for update語(yǔ)句.但是,請(qǐng)記住執(zhí)行完一定要commit 否則容易出現(xiàn)所等待比較嚴(yán)重.
例如:
[world]>select * from city where id=999 for update;
[world]>commit;

4浅碾、INNODB核心參數(shù)

4.1大州、雙一標(biāo)準(zhǔn)之一:innodb_flush_log_at_trx_commit=1

作用:控制了redo buffer刷寫策略,是一個(gè)安全參數(shù)垂谢,實(shí)在5.6版本以上默認(rèn)的參數(shù)
 等于1:每次事務(wù)提交厦画,都會(huì)立即刷下redo到磁盤(redo buffer  ----每事務(wù)----> os buffer 
 ----每事務(wù)---->磁盤)
等于0:每次當(dāng)事務(wù)提交時(shí)。不做日志寫入操作(redo buffer  ----每秒----> os buffer 
 ----每秒---->磁盤)
等于2:每次事務(wù)提交引起寫入文件系統(tǒng)緩存 (redo buffer  ----每事務(wù)----> os buffer 
 ----每秒---->磁盤)

4.2滥朱、innodb_flush_method=(O_DIRECT,fdatasync);

作用:控制了redo buffer 和 data  buffer  刷寫磁盤方式

最大安全模式:
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT

最大性能模式:
innodb_flush_log_at_trx_commit=0
innodb_flush_method=fsync


4.3根暑、關(guān)于redo設(shè)置

innodb_log_buffer_size=128M 起   和業(yè)務(wù)系統(tǒng)cpu壓力有關(guān)
innodb_log_file_size=256  一般是1~2倍
innodb_log_files_in_group = 3   一般是3~4組

4.4、innodb_buffer_pool_size

一般調(diào)整為物理內(nèi)存的50~80%左右(你的系統(tǒng)中只有一個(gè)mysql實(shí)例)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末徙邻,一起剝皮案震驚了整個(gè)濱河市排嫌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缰犁,老刑警劉巖淳地,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異民鼓,居然都是意外死亡薇芝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門丰嘉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嚷缭,你說(shuō)我怎么就攤上這事饮亏∷<郑” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵路幸,是天一觀的道長(zhǎng)荐开。 經(jīng)常有香客問我,道長(zhǎng)简肴,這世上最難降的妖魔是什么晃听? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮砰识,結(jié)果婚禮上能扒,老公的妹妹穿的比我還像新娘。我一直安慰自己辫狼,他們只是感情好初斑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膨处,像睡著了一般见秤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上真椿,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天鹃答,我揣著相機(jī)與錄音,去河邊找鬼突硝。 笑死挣跋,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狞换。 我是一名探鬼主播避咆,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼修噪!你這毒婦竟也來(lái)了查库?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黄琼,失蹤者是張志新(化名)和其女友劉穎樊销,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脏款,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡围苫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了撤师。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剂府。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剃盾,靈堂內(nèi)的尸體忽然破棺而出腺占,到底是詐尸還是另有隱情淤袜,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布衰伯,位于F島的核電站铡羡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏意鲸。R本人自食惡果不足惜烦周,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怎顾。 院中可真熱鬧读慎,春花似錦、人聲如沸杆勇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蚜退。三九已至闰靴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钻注,已是汗流浹背蚂且。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留幅恋,地道東北人杏死。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像捆交,于是被迫代替她去往敵國(guó)和親淑翼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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