mysql时间复杂度o的n次方_MySQL性能测试调优
MySQL性能測試調優
操作系統
基本操作
查看磁盤分區mount選項
$ mount
永久修改分區mount選項(系統重啟后生效)
修改文件 /etc/fstab 中對應分區的mount options列的值
在線修改分區mount選項(系統重啟后失效)
$sudo -t ext4 -o remount,noatime,errors=remount-or /
文件系統優化
ext4文件系統優化
分區mount選項加noatime $sudo -t ext4 -o remount,noatime,errors=remo
注意:剛開始加了 nodelalloc 發現mysql寫入不如去掉此參數(原因需分析)[參考:http://blog.tao.ma/?p=58]
MySQL
基本操作
顯示innodb引擎狀態
mysql> show engine innodb status;
查看配置參數
mysql> show variables [like ''];
查看運行狀態值
mysql> show global status [like ''];
修改配置參數方法
4.1. 修改配置文件(重啟服務生效,適用于所有參數)
文件位置: /etc/my.cnf
4.2. 命令動態修改(重啟服務失效,適用于動態參數)
°mysql> set global [參數]=[值]
重啟MySQL服務
$ sudo service [mysql.server] restart
賦權同時添加用戶,刷新權限
語法:
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;
參數調整
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.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
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
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
總結
以上是生活随笔為你收集整理的mysql时间复杂度o的n次方_MySQL性能测试调优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在家用C&M初木设计师地板的私人
- 下一篇: 在旅游城市里买房子会增值吗?