1. 程式人生 > >MySQL效能調優

MySQL效能調優

1、修改伺服器BIOS設定 1.1.選擇performance Per watt Optimized(DAPC)模式、發揮CPU最大效能。 1.2.Memory Frequency(記憶體頻率) 選擇Maximum performance(最近效能)。 1.3.記憶體設定選單中 啟動Node Interleaving 避免UNMA問題。 在這裡插入圖片描述在這裡插入圖片描述 2、磁碟I/O相關配置 2.1.使用SSD磁碟。 2.2.如官是磁碟陣列儲存,建議整列卡同時配置CACHE及BBU模組,可以明顯提升IOPS。 2.4 raid級別儘量選擇raid10,而不是raid5。

軟體raid:只能通過Linux系統本身來檢視
cat /proc/mdstat
可以看到raid級別,狀態等資訊。
硬體raid: 最佳的辦法是通過已安裝的raid廠商的管理工具來檢視,有cmdline,也有圖形介面。
硬RAID(hard-RAID)
    通過專門的RAID控制晶片實現。一般表現為RAID卡,並且卡上有專用的、獨立於主機板BIOS的韌體(一般也稱其為BIOS)。
偽RAID(fake-RAID)
    通過SATA/IDE等磁碟控制晶片附帶的RAID韌體(集成於主機板的BIOS中)實現,所以又稱為"bios-RAID"。典型的例子就是Intel ICHxR系列南橋晶片。
軟RAID(soft-RAID)
    完全通過作業系統核心實現的RAID。不需要任何額外的輔助硬體。

3、檔案系統層優化 3.1.使用deadline/noop這兩種I/O排程器,千萬別用cfq。

命令為 iostat 如果提示命令找不到,請先安裝 安裝命令為 yum install sysstat 
I/O排程的4種演算法:CFQ(完全公平排隊I/O排程程式)、NOOP(電梯式排程程式)、Deadline(截止時間排程程式)、AS(預料I/O排程程式)
 [email protected]:~$cat /sys/block/sda/queue/scheduler
noop deadline [cfq] 

3.2.使用xfs文化系統,千萬別用etx3;ext4勉強可用,但是業務量很大的話,則一定要用xfs; 3.3.系統檔案mount引數中增加:noatime,nodiratime,nobarrier幾個選項(nobarrier是xfs檔案系統特有的)。 4、核心引數優化

4.1.修改vm.swappiness引數,降低swap使用率。RHEL7、centos7以上慎重設定0,可能發生OOM。 4.2.調整vm.dirty_background_ratio、vm.dirty_ratio核心引數、以保證能持續將髒讀資料重新整理到磁碟,避免新建I/O寫,產生等待。 4.3.調整net.ipv4.tcp_tw_recycle 、net.ipv4_tw_reuse 都設定為1,減少TIME_WAIT,提高TCP效率。 在這裡插入圖片描述 5、MySQL引數優化建議 5.1 建議設定default-storage-engine=InnoDB,強烈建議不要使用MylSAM引擎。 5.2調整lnnodb_buffer_pool_size的大小,如果是單例項且絕大多數是InnoDB引擎表的話,可以考慮設定為實體記憶體的50%-70%左右。 設定innodb_file_per_table = 1,使用獨立表空間。 調整innodb_data_file_path = ibdata1:1G:autoextend,不要用預設的10M,在高併發場景下,效能會有很大提升。 設定innodb_log_file_size=256M,設定innodb_log_files_in_group=2,基本可以滿足大多數應用場景。 調整max_connection(最大連線數)、max_connection_error(最大錯誤數)設定,根據業務量大小進行設定。 另外,open_files_limit、innodb_open_files、table_open_cache、table_definition_cache可以設定大約為max_connection的10倍左右大小。 key_buffer_size建議調小,32M左右即可,另外建議關閉query cache。 mp_table_size和max_heap_table_size設定不要過大,另外sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等設定也不要過大。