檔案系統:
優化檔案系統挂載參數:檔案系統挂載參數是在/etc/fstab檔案中修改,重新開機時候生效。noatime表示不記錄通路時間,nodiratime不記錄目錄的通路時間。barrier=0,表示關閉barrier功能。其中nobarrier是xfs檔案系統特有,ext4檔案系統并無此參數。
擴大檔案描述符:
1、動态修改,重新開機失效,隻能使用root,并且目前session有效:ulimit -n 65535
2、修改配置檔案,永久生效,在/etc/security/limits.conf配置檔案中增加:
soft nofile 65535
soft nproc 65535
hard nofile 65535
hard nproc 65535
sync_binlog:
sync_binlog=0,當事務送出之後,MySQL不做fsync之類的磁盤同步指令重新整理binlog_cache中的資訊到磁盤,而讓Filesystem自行決定什麼時候來做同步,或者cache滿了之後才同步到磁盤。
sync_binlog=n,當每進行n次事務送出之後,MySQL将進行一次fsync之類的磁盤同步指令來将binlog_cache中的資料強制寫入磁盤。
innodb_flush_log_at_trx_commit:
如果innodb_flush_log_at_trx_commit設定為0,log buffer将每秒一次地寫入log file中,并且log file的flush(刷到磁盤)操作同時進行.該模式下,在事務送出的時候,不會主動觸發寫入磁盤的操作。
如果innodb_flush_log_at_trx_commit設定為1,每次事務送出時MySQL都會把log buffer的資料寫入log file,并且flush(刷到磁盤)中去.
如果innodb_flush_log_at_trx_commit設定為2,每次事務送出時MySQL都會把log
buffer的資料寫入log file.但是flush(刷到磁盤)操作并不會同時進行。該模式下,MySQL會每秒執行一次
flush(刷到磁盤)操作。
強烈建議關閉query cache。通過配置檔案設定query_cache_size = 0、query_cache_type = 0即可。
分布式優化
分庫分表:
這裡也可以分為2類:
(1)通過前端應用代碼邏輯實作的方式,實作表分拆的方式。這樣做對應用程式的侵入性比較大,但是資料處理邏輯的過程把控在自己手上,有異常可以自主定位。
(2)通過中間件的方式實作,目前常用的mycat、cobar實作資料分片。
讀寫分離: