硬體概況:
linux伺服器,64位4核cpu,8g記憶體。
主要引數:
innodb_buffer_pool_size
這個引數很重要,越大越好,對於專用的資料庫伺服器一般建議開伺服器記憶體的50%以上。
query_cache_size
查詢快取,對於查詢的效能提高有很大幫助,但不宜開得過大,查詢快取的過期可能很頻繁,過大查詢快取反而降低效能,增加伺服器開銷
innodb_flush_method
針對innodb的資料檔案,關閉作業系統的檔案緩衝,由於innodb自己有巨大的buffer pool,作業系統對檔案的讀寫緩衝功能反而會降低mysql的innodb的io效能。
作用:innodb和系統打交道的乙個io模型
分配原則:windows不用設定。
unix可以設定:fsync() or o_sync/o_dsync
如果系統可以禁止系統的cache那就把他禁了。
linux可以選擇:o_direct
直接寫入磁碟,禁止系統cache了
innodb_flush_logs_at_trx_commit
作用:控制事務的提交方式
分配原則:這個引數只有3個值,0,1,2請確認一下自已能接受的級別。預設為1,主庫請不要更改了。
效能更高的可以設定為0或是2,但會丟失一秒鐘的事務。
說明:
這個引數的設定對innodb的效能有很大的影響,所以在這裡給多說明一下。
當這個值為1時:innodb 的事務log在每次提交後寫入日值檔案,並對日值做重新整理到磁碟。這個可以做到不丟任何乙個事務。
當這個值為2時:在每個提交,日誌緩衝被寫到檔案,但不對日誌檔案做到磁碟操作的重新整理,在對日誌檔案的重新整理在值為2的情況也每秒發生一次。但需要注意的 是,由於程序呼叫方面的問題,並不能保證每秒100%的發生。從而在效能上是最快的。但作業系統崩潰或掉電才會刪除最後一秒的事務。
當這個值為0時:日誌緩衝每秒一次地被寫到日誌檔案,並且對日誌檔案做到磁碟操作的重新整理,但是在乙個事務提交不做任何操作。mysqld程序的崩潰會刪除崩潰前最後一秒的事務。
從以上分析,當這個值不為1時,可以取得較好的效能,但遇到異常會有損失,所以需要根據自已的情況去衡量。
innodb_log_file_size
作用:指定日值的大小
分配原則:幾個日值成員大小加起來差不多和你的innodb_buffer_pool_size相等。上限為每個日值上限大小為4g.一般控制在幾個log檔案相加大小在2g以內為佳。具體情況還需要看你的事務大小,資料大小為依據。
說明:這個值分配的大小和資料庫的寫入速度,事務大小,異常重啟後的恢復有很大的關係。
設定方法:
innodb_log_file_size=256m
innodb_log_files_in_group
作用:指定你有幾個日值組。
分配原則: 一般我們可以用2-3個日值組。預設為兩個。
設定方法:
innodb_log_files_in_group=3
優化如下——
#innodb_buffer_pool_size = 2ginnodb_buffer_pool_size = 4g
innodb_log_file_size = 256m
#innodb_log_file_size = 128m
innodb_log_files_in_group = 3
#innodb_log_files_in_group = 2
innodb_flush_method = o_direct
MySQL Innodb資料庫效能實踐
在實際工作中,經常有同事問道 mysql innodb表記錄數多大是合適的?一般的理解肯定是表越大效能越低,但具體低多少呢,是緩慢下降還是急劇下降,是1000萬就下降還是1億才下降呢?針對這些問題,我做了一下基準測試,基準測試環境如下 硬體配置 硬體配置 cpuintel r xeon r cpu ...
MySql innodb 資料庫備份和遷移
首先說明,這個題目有點大,題目與實際內容不符。最近幾天,在進行資料融合處理時,需要對innodb表 資料以多表形式進行儲存,由共享表轉為多表,網上資料比較多,不再贅述 的資料進行頻繁備份和替換,涉及到innodb資料庫表的備份處理。通過查閱mysql的官方文件,給出兩種備份方式 單錶備份和使用商業軟...
MySql Innodb 資料結構
查閱資料時了解到的資訊 整理一下,方便以後檢視一 索引介紹 索引是資料庫中非常非常重要的概念,它是儲存引擎能夠快速定位記錄的秘密 對於提公升資料庫的效能 減輕資料庫伺服器的負擔有著非常重要的作用 索引優化是對查詢效能優化的最有效手段,它能夠輕鬆地將查詢的效能提高幾個數量級。2.資料結構 b tree...