MySql優化

前言:

        回想當初剛投入工作時,想的是努力工作,早日成爲一個老司機,如今也已經工作一年有餘,現在的工作做的倒是順風順水,然而想想自己的成長,卻覺得自己的技術成長極少,甚至之前熟悉的技術,也因爲工作中極少使用而被遺忘,細思極恐。。。所以痛下決心,不能再如此安逸下去了。。。於是決定在工作之餘,學習知識,提高自己。

       本篇博客是我看了《MySQL5.6從零開始學》這本書之後,總結了該書中所提到的一些關於MySQL優化相關的知識。

概要:

          MySQL優化,大的層面分爲三個:優化查詢,優化數據庫結構,優化MySQL服務器。本文只講述三個大層面下的各個優化方法,至於每種優化方法的細節不做具體描述。主要幫助自己整理思路,也可作爲一個學習MySQL優化的提綱。

一,優化查詢

         (1)分析查詢語句

           要想優化一條查詢語句,我們首先要分析這個查詢語句,MySQL使用 EXPLAIN 和 DESCRIBE關鍵字分析查詢語句。其具體使用語法,和分析參數解析在此不再詳述。

       (2)使用索引查詢

             使用索引可以增加查詢速度,這一點毋庸置疑,單單對於查詢來說增益非常明顯。但是創建了索引相應的會減慢插入,刪除的速度。大量的索引文件也會增加數據庫的體積。所以有利有弊。如何創建索引,以及應該何時創建索引,使用索引的利弊,這些都是非常有必要研究的,在此不再詳述。

        (3)優化子查詢

             這裏只有一句話:使用連接查詢代替子查詢。至於爲什麼建議使用連接查詢,而不建議使用子查詢,以及如何將連接查詢替換爲子查詢,這些具體細節值得深究,在此不再詳述了,我會在下一篇博客中總結一下。

二,優化數據庫結構

          (1)將字段很多的表分解成多個表。

              這個嘛一看就懂了啊。如果一個表中的字段超過了50個,那真的是要吐的,可以通過創建父子表,關聯表來細化拆分。

        (2)增加中間表

             這個好處也是很明顯的,使用中間表進行關聯,主要用於解決多對多的關係,建議在中間表中也應該創建一個自增的id作爲主鍵。

         (3)增加冗餘字段

             適度的增加冗餘字段能夠提升查詢速度,簡化操作,因爲不用每次都使用聯接查詢,獲取屬性。但是使用冗餘字段違反了數據庫第三範式的設計原則,需要根據業務設計冗餘字段。

          (4)優化插入記錄的速度

               正如上面所說,創建索引提升了查詢速度,卻減慢插入的速度,所以增加插入速度一條重要的操作就是,禁用索引(插入前禁用,插入後在開啓);另外還有禁用唯一性檢查,禁用外鍵檢查,禁止自動提交,使用批量插入,儘量使用LOAD DATA INFILE 語句做批量插入。至於這些操作的具體實現在此不再詳述。

          (5)分析表,檢查表,優化表

                MySQL提供了分析表,檢查表,優化表的語句,分析表主要是分析關鍵字的分佈;檢查表主要是檢查表是否存在錯誤;優化表主要是消除刪除和更新造成的空間浪費。

三,優化MySQL服務器

                優化MySQL服務器,屬於專業操作,在此只做瞭解,如需深入研究,還請自己百度。

             (1)優化服務器硬件

         (2)優化MySQL參數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章