MySql調(diào)優(yōu)初探

1.查詢MySql系統(tǒng)變量:SHOW VARIABLES LIKE '%quer%';

1.png

2.查詢慢查詢數(shù)量: SHOW STATUS LIKE '%slow_queries%';

3.開啟慢日志: SET GLOBAL slow_query_log = ON;

開啟后通過 1步驟中的語句再次查詢可以看到 slow_query_log已經(jīng)是 on

2.png

slow_query_log_file 可以找到慢日志文件的位置商乎;

4.默認慢查詢的時間為10s,改變慢查詢時間定義: SET GLOBAL long_query_time = 1;

5.如果有慢sql,可以通過慢日志定位sql此熬,然后通過explain xxsql 來定位

index指的走了索引 踪栋,all 指的該sql都是全表掃描购城,需要優(yōu)化复唤,更多的參數(shù)意義专缠,若有興趣腾务,可以自行百度岳链。

常見的優(yōu)化就是分析慢sql,合理創(chuàng)建索引署浩,下面是一些常用到的揉燃。

1)創(chuàng)建索引

索引的創(chuàng)建可以在CREATE TABLE語句中進行,也可以單獨用CREATE INDEX或ALTER TABLE來給表增加索引筋栋。以下命令語句分別提示了如何創(chuàng)建主鍵索引(PRIMARY KEY)炊汤,聯(lián)合索引(UNIQUE)和普通索引(INDEX)的方法。

mysql>ALTER TABLE `table_name` ADD INDEX `index_name` (column list);

mysql>ALTER TABLE `table_name` ADD UNIQUE `index_name` (column list);

mysql>ALTER TABLE `table_name` ADD PRIMARY KEY `index_name` (column list);

mysql>CREATE INDEX `index_name` ON `table_name` (column_list);

mysql>CREATE UNIQUE INDEX `index_name` ON `table_name` (column_list);

mysql>ALTER TABLE `article` ADD INDEX (`id`,`order_id`);給article表增加id索引弊攘,order_id索引

mysql>ALTER TABLE `article` ADD INDEX `id`;//給article表增加id索引

2)重建索引

重建索引在常規(guī)的數(shù)據(jù)庫維護操作中經(jīng)常使用抢腐。在數(shù)據(jù)庫運行了較長時間后,索引都有損壞的可能襟交,這時就需要重建迈倍。對數(shù)據(jù)重建索引可以起到提高檢索效率。

mysql> REPAIR TABLE `table_name` QUICK;

3)查詢數(shù)據(jù)庫索引

mysql> SHOW INDEX FROM `table_name`; 

4)刪除索引

刪除索引可以使用ALTER TABLE或DROP INDEX語句來實現(xiàn)捣域。DROP INDEX可以在ALTER TABLE內(nèi)部作為一條語句處理啼染,其格式如下:

mysql>DROP index `index_name` ON `table_name` (column list);

mysql>ALTER TABLE `table_name` DROP INDEX `index_name` (column list);

mysql>ALTER TABLE `table_name` DROP UNIQUE `index_name` (column list);

mysql>ALTER TABLE `table_name` DROP PRIMARY KEY `index_name` (column list);

在前面的三條語句中,都刪除了table_name中的索引index_name焕梅。而在最后一條語句中迹鹅,只在刪除PRIMARY KEY索引中使用,因為一個表只可能有一個PRIMARY KEY索引丘侠,因此也可不指定索引名徒欣。如果沒有創(chuàng)建PRIMARY KEY索引,但表具有一個或多個UNIQUE索引蜗字,則MySQL將刪除第一個UNIQUE索引打肝。如果從表中刪除某列脂新,則索引會受影響。對于多列組合的索引粗梭,如果刪除其中的某列争便,則該列也會從索引中刪除。如果刪除組成索引的所有列断医,則整個索引將被刪除滞乙。

5)強制使用索引

mysql>SELECT * FROM TABLE1 FORCE INDEX (索引名或PRIMARY) ;

6)聯(lián)合索引

mysql>alter table test add key id_a_b(a,b) ;

6.1)聯(lián)合索引的最左匹配原則:

對于聯(lián)合索引當條件為 a=1 and b=1 則使用索引 ,當a=1 時也使用索引 當單獨使用b=1時則不使用索引鉴嗤。

MySql會一直向右匹配直到遇到范圍查詢(>斩启、<、between醉锅、like)就停止匹配兔簇,比如 a=3 and b=4 and c > 5 and d = 6 如果建立(a,b,c,d)順序的索引,d是用不到索引的硬耍,如果建立(a,b,d,c)的索引垄琐,則都可以用到,a,b,d的順序可以任意調(diào)整经柴。

6.2) = 和 in 可以亂序狸窘,比如 a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意亂 序,mysql優(yōu)化器會幫你優(yōu)化成索引可以識別的形式坯认。

6.3)聯(lián)合索引的最左匹配原則的成因

mysql創(chuàng)建復合索引的規(guī)則是首先會對復合索引的最左邊翻擒,也就是索引中的第一個字段進行排序,在第一個字段排序的基礎上牛哺,在對索引上第二個字段進行排序韭寸,其實就像是實現(xiàn)類似order by 字段1,字段2這樣的排序規(guī)則荆隘,那么第一個字段是絕對有序的,而第二個字段就是無序的了赴背,因此一般情況下直接只用第二個字段判斷是用不到索引的椰拒,這就是為什么mysql要強調(diào)聯(lián)合索引最左匹配原則的原因。

優(yōu)化需謹慎凰荚,對于索引也不是越多越好燃观,下面是關于索引過多的弊端:

  • 數(shù)據(jù)量小的表不需要建立索引,建立會增加額外的索引開銷
  • 數(shù)據(jù)變更需要維護索引便瑟,意味著更多的索引意味著更多的維護成本
  • 更多的索引也需要跟多的存儲空間

小結(jié):

在平時項目中遇到慢sql缆毁,學會分析慢sql,對于特別耗時的需要通過建立合理的索引到涂,遇到表結(jié)構(gòu)不合理的脊框,合理結(jié)合項目進行改造颁督,約在前期注意這些問題,后期會在維護方面省不少事浇雹。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沉御,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昭灵,更是在濱河造成了極大的恐慌吠裆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件烂完,死亡現(xiàn)場離奇詭異试疙,居然都是意外死亡,警方通過查閱死者的電腦和手機抠蚣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門祝旷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人柱徙,你說我怎么就攤上這事缓屠。” “怎么了护侮?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵敌完,是天一觀的道長。 經(jīng)常有香客問我羊初,道長滨溉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任长赞,我火速辦了婚禮晦攒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘得哆。我一直安慰自己脯颜,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布贩据。 她就那樣靜靜地躺著栋操,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饱亮。 梳的紋絲不亂的頭發(fā)上矾芙,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音近上,去河邊找鬼剔宪。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的葱绒。 我是一名探鬼主播感帅,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哈街!你這毒婦竟也來了留瞳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤骚秦,失蹤者是張志新(化名)和其女友劉穎她倘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體作箍,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡硬梁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胞得。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荧止。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阶剑,靈堂內(nèi)的尸體忽然破棺而出跃巡,到底是詐尸還是另有隱情,我是刑警寧澤牧愁,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布素邪,位于F島的核電站,受9級特大地震影響猪半,放射性物質(zhì)發(fā)生泄漏兔朦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一磨确、第九天 我趴在偏房一處隱蔽的房頂上張望沽甥。 院中可真熱鬧,春花似錦乏奥、人聲如沸摆舟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盏檐。三九已至,卻和暖如春驶悟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背材失。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工痕鳍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓笼呆,卻偏偏與公主長得像熊响,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诗赌,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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

  • MYSQL 基礎知識 1 MySQL數(shù)據(jù)庫概要 2 簡單MySQL環(huán)境 3 數(shù)據(jù)的存儲和獲取 4 MySQL基本操...
    Kingtester閱讀 7,817評論 5 116
  • 轉(zhuǎn) # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    呂品?閱讀 9,732評論 0 44
  • 一汗茄、MySQL優(yōu)化 MySQL優(yōu)化從哪些方面入手: (1)存儲層(數(shù)據(jù)) 構(gòu)建良好的數(shù)據(jù)結(jié)構(gòu)∶簦可以大大的提升我們S...
    寵辱不驚丶歲月靜好閱讀 2,438評論 1 8
  • 今天看到一位朋友寫的mysql筆記總結(jié)洪碳,覺得寫的很詳細很用心,這里轉(zhuǎn)載一下叼屠,供大家參考下瞳腌,也希望大家能關注他原文地...
    信仰與初衷閱讀 4,734評論 0 30
  • 我是個愛錢又攢不住錢的保守主義者。 從大學兼職賺到第一筆錢一直到一年前镜雨,我始終堅信錢存銀行才是最保險的嫂侍,無論基金、...
    不辣的媽閱讀 229評論 0 0