MySQL性能測試調優

操做系統
html

基本操做

  1. 查看磁盤分區mount選項node

    $ mountmysql

  2. 永久修改分區mount選項(系統重啓後生效)sql

    修改文件 /etc/fstab 中對應分區的mount options列的值數據庫

  3. 在線修改分區mount選項(系統重啓後失效)緩存

    $sudo -t ext4 -o remount,noatime,errors=remount-or /服務器

文件系統優化

  1. ext4文件系統優化架構

    分區mount選項加noatime $sudo -t ext4 -o remount,noatime,errors=remoasync

    注意:剛開始加了 nodelalloc 發現mysql寫入不如去掉此參數(緣由需分析)[參考:http://blog.tao.ma/?p=58]ide

MySQL

基本操做

  1. 顯示innodb引擎狀態

    mysql> show engine innodb status;

  2. 查看配置參數

    mysql> show variables [like ''];

  3. 查看運行狀態值

    mysql> show global status [like ''];

  4. 修改配置參數方法

    4.1. 修改配置文件(重啓服務生效,適用於全部參數)

    文件位置: /etc/my.cnf

    4.2. 命令動態修改(重啓服務失效,適用於動態參數)

    °mysql> set global [參數]=[值]

  5. 重啓MySQL服務

    $ sudo service [mysql.server] restart

  6. 賦權同時添加用戶,刷新權限

    • 語法:

    mysql> grant [權限] privileges on [數據庫].[對象] to [用戶名]%'[機器名]' identified by '[密碼]';

    • 示例:

    mysql> grant all privileges on *.* to user1@'%' identified by 'pass1';
    mysql> grant all privileges on *.* to user1@'localhost' identified by 'pass1';
    mysql> flush privileges;

參數調整

  1. innodb_buffer_pool_size 參考

    • 做用:

      InnoDB用於緩存表及索引數據的內存緩衝區,InnoDB加速優化首要參數

    • 說明:

      InnoDB用於緩存表及索引數據的內存緩衝區容量的字節數。默認是128M。最大值受限於CPU架構;32位系統最大4294967295 (2的32次方減1),64位系統最大18446744073709551615 (2的64次方減1)。在32位系統中,CPU架構和操做系統可使用的實際最大值可能小於理論上的最大值。當緩衝區大小超過1GB時,設置innodb_buffer_pool_instances爲大於1的值,可以改進一個負荷較大的服務器的可擴展性。
      若是你將這個值設的較大,當屢次訪問數據表中相同的數據時能夠減小磁盤IO.專用的數據庫服務器上,你能夠將此值設置爲機器物理內存的80%。若是出現如下問題,請縮小該參數的值。
      1.物理內存爭用,致使操做系統進行頁調度
      2.InnoDB用額外的內存進行緩衝和控制結構,因此總共分配的內存將比指定的約大10%
      3.地址空間必須是連續的,這在Windows系統中某些DLL須要加載指定地址時多是一個問題
      4.初始化緩衝池的時間與它的大小成正比,若是緩衝池太大,初始化時間可能比較長。例如,在一個現代的Linux x86_64服務器,初始化10GB的緩衝池大約須要6秒。

    • 修改方法:

      靜態參數,必須經過配置文件修改: innodb_buffer_pool_size=8G

  2. 日誌相關參數

    2.1. innodb_log_file_size 參考

    • 做用:

      日誌組中每一個日誌文件大小

    • 說明:

      日誌組中每一個日誌文件的大小. 全部日誌文件大小總和(innodb_log_file_size * innodb_log_files_in_group)不能超過一個最大值(略小於512GB)。例如,兩個255G的日誌文件恰好接近但未超過最大值。默認值是48M。合理的取值範圍是1MB到緩衝池大小的1/N,N是日誌組中日誌文件個數。這個值越大,緩衝池就須要更少的刷新檢查,減小磁盤IO。可是值過大會加大宕機恢復時間,雖然自MySQL5.5改進了恢復性能,可是仍是要考慮下這個值的合理性。

    • 修改方法:

      靜態參數,必須經過配置文件修改: innodb_log_file_size=256M

    2.2. innodb_log_files_in_group 參考

    • 做用:

      日誌組中日誌文件個數。

    • 說明:

      日誌組中日誌文件個數。InnoDB循環方式寫日誌文件。默認值(也是建議值)是2。日誌文件的位置經過innodb_log_group_home_dir指定。全部日誌文件大小總和(innodb_log_file_size * innodb_log_files_in_group)不能超過一個最大值(略小於512GB)。

    • 修改方法:

      靜態參數,必須經過配置文件修改: innodb_log_files_in_group=3

    2.3. innodb_log_buffer_size 參考

    • 做用:

      InnoDB寫日誌文件到磁盤的緩衝區大小

    • 說明:

      InnoDB寫日誌文件到磁盤的緩衝區大小。默認值是8M。大的日誌緩衝區支持大事務運行,在事務提交前不須要將日誌寫到磁盤。若是你有些事務update,insert或delete不少行,加大日誌緩衝能夠減小磁盤IO。

    • 修改方法:

      靜態參數,必須經過配置文件修改: innodb_log_buffer_size=16M

  3. innodb_flush_method 參考

    • 做用:

      控制InnoDB flush數據和日誌文件採用的系統調用

    • 說明:

      Windows不用設置
      Linux可選擇:fdatasync(默認),O_DSYNC,O_DIRECT(直接寫入磁盤,禁止系統Cache),O_DIRECT_NO_FSYNC(>=5.6.7版本支持)

    • 修改方法:

      靜態參數,必須經過配置文件修改: innodb_flush_method=O_DIRECT

  4. innodb_flush_log_at_trx_commit(未修改) 參考

    • 做用:

      控制事務符合ACID和提升系統性能之間的權衡

    • 說明:

      這個參數在事務符合ACID和高性能之間進行平衡,你能夠經過調整這個參數達到高性能,可是宕機時可能丟失1秒的事務。
      這個參數有3個值選項0,1,2:
      1(默認值):嚴格聽從ACID,事務提交時log buffer被寫到日誌文件中,並將日誌文件內容flush到磁盤。
      0:任何mysqld進程崩潰丟失1秒鐘的事務。log buffer每隔1秒被寫入日誌文件並將日誌文件刷新到磁盤,事務提交時不執行log buffer寫入日誌文件的操做。由於系統調度問題,不能保證每秒日誌文件都刷新到磁盤百分之百執行。
      2:任何mysqld進程崩潰丟失1秒鐘的事務。事務提交時log buffer被寫入日誌文件,每隔1秒將日誌文件刷新到磁盤。由於系統調度問題,不能保證每秒日誌文件都刷新到磁盤百分之百執行。

    • 修改方法:

      動態參數,能夠經過配置文件和命令修改:innodb_flush_log_at_trx_commit=2

相關文章
相關標籤/搜索