Mysql一些重要配置參數的學習與整理(三)

    原文地址:Mysql一些重要配置參數的學習與整理(三)html

   

    以前的Mysql一些重要配置參數的學習與整理(一)Mysql一些重要配置參數的學習與整理(二)中,對於線上mysql服務器的一些配置參數進行了學習,不過參閱官方doc後對其中的一些參數的配置的理解不是很清晰,今天與同事進行了交流和溝通,都一些重要的配置交換了意見,本篇就對其中的一些疑問點,整理一下心得。mysql


    skip-external-locking做用sql

    在Mysql Linux 的發行版中,默認存在一行skip-external-locking,它表示跳過外部鎖定,與之相對,External-locking變量表示啓用外 部鎖定,用於多線程條件下對MyISAM數據表進行鎖定,默認狀況下mysql是禁用外部鎖定的,在現實生產中,咱們的業務環境是單服務器環境,不須要外 部鎖定,因此將其禁用。數據庫


    key_buffer_size 在InnoDB引擎時無效windows

    在 現實的生產環境中,咱們曾對業務庫進行過升級,雖然咱們的業務庫使用的是InnoDB引擎,可是其中仍然存在幾張遺留的使用MyISAM存儲引擎的表,設 置這個參數也是爲了提供對於這幾張表的訪問性能,用於這幾張表的索引更好的處理讀和多寫操做。另外,在以前windows上安裝mysql 5.5時,會默認產生幾個不一樣生產環境的my.ini文件,這個參數的配置也參閱了其中的一些配置。服務器

 

    table_open_cache=64 設置是否太小多線程

    這個參數的設置最好根據現實生產環境進行設置,在mysql命令行經過show global status like 'open%_tables%',能夠查到兩個重要的參數,以下:併發

    +---------------+-------+性能

    | Variable_name | Value |學習

    +---------------+-------+

    |  Open_tables   | 81    |

    | Opened_tables | 88    |

    +---------------+-------+

    對與大多數的服務器設置,建議參考一下公式:Open_tables / Opened_tables >= 0.85;Open_tables / table_open_cache <= 0.95

    可是並非設置table_open_cache越大越好,由於table_cache加大後,使得mysql對 SQL響應的速度更快了,不可避免的會產生更多的死鎖(dead lock),這樣反而使得數據庫整個一套操做慢了下來,嚴重影響性能。因此平時維護中仍是要根據庫的實際狀況去做出判斷,找到最適合你維護的庫的 table_open_cache值。

    詳請參閱:參數table_open_cache

    myisam_sort_buffer_size參數只對MyISAM引擎有效

在現實的生產環境中,雖然咱們的業務庫使用的是InnoDB引擎,但有多張業務表使用的是MyIsam引擎,須要這個參數,用於進行表恢復時使用的緩衝區的大小,也是參考了mysql 5.5的配置。


    net_buffer_length默認爲16K,設置爲8K?

    這個參數根據客戶端connection 語句的長度有關,現實的業務並不繁雜,語句也比較簡單,參考mysql 5.5的配置,設置net_buffer_length=8k,不過通過與同事討論,決定使用默認值16K。


    thread_cache_size設置爲20的依據

    這個參數的設置與max_connections有關,max_connections表示最大容許的併發客戶端鏈接數,會影響在服務器上運行的線程數量,默認值是151,thread_cache_size 的設置,官方doc建議公式:8+(max_connections / 100),這與現實的業務也存在關係,當服務器併發很大時,須要修改max_connections的值以知足業務須要,在咱們的現實業務 中,thread_cache_size設置爲20較爲合適。


    innodb_flush_log_at_trx_commit 官方doc建設不要修改默認值

    雖然mysql官方doc建議將innodb_flush_log_at_trx_commit設置爲1,但在現實的業務中,客戶對於業務性能的速度很高,默認爲1表示,在每次事務提交的時候,InnoDB日誌緩衝區的內容都會被寫入到日誌文件,而且日誌文件會被刷新到磁盤。設置爲2減小了刷新磁盤的操做,雖然在忽然斷點或系統崩潰時可能丟失事務數據,可是在業務容許範圍內,相反修改此參數對於業務速度有很大的提高。


    read_rnd_buffer_size增長order by查詢效率

    在What exactly is read_rnd_buffer_size中有了一點理解,其中提到了read_buffer_size,在三個方法優化MySQL數據庫查詢中大概的瞭解了這個參數的做用,當一個查詢不斷地掃描某一個表,MySQL會爲它分配一段內存緩衝區。read_buffer_size變 量控制這一緩衝區的大小。若是你認爲連續掃描進行得太慢,能夠經過增長該變量值以及內存緩衝區大小提升其性能。不過貌似這兩個參數都是值針對於 MyIsam表的,在mysql安裝目錄my.ini中看到這樣一句註釋:Size of the buffer used for doing full table scans of MyISAM tables。對於這個參數的配置還須要再討論。


    InnoDB_thread_concurrency

    具體的能夠看這裏

關於Mysql thread_concurrency和innodb_thread_concurrency參數的一點整理,對於這個參數的具體配置以及實際效果還須要再討論和測試。

相關文章
相關標籤/搜索