InnoDB參數詳解

1.查詢5.5版本的InnoDB參數並註釋:
[root@localhost etc]# grep -i innodb my.cnf;
html

t_innodb; otherwise, slaves may diverge from the master.mysql

Uncomment the following if you are using InnoDB tables#若是要使用InnoDB下面的都是須要配置的.linux

innodb_data_home_dir = /usr/local/mysql/data #InnoDB表的目錄共用設置。若是沒有在 my.cnf 進行設置,InnoDB 將使用MySQL的 datadir 目錄爲缺省目錄sql

innodb_data_file_path = ibdata1:10M:autoextend #單獨指定數據文件的路徑與大小。數據庫

innodb_log_group_home_dir = /usr/local/mysql/data #InnoDB 日誌文件的路徑。安全

innodb_buffer_pool_size = 16M #InnoDB 用來高速緩衝數據和索引內存緩衝大小。 更大的設置可使訪問數據時減小磁盤 I/O。在一個專用的數據庫服務器上能夠將它設置爲物理內存的 80 %。 不要將它設置太大,由於物理內存的使用競爭可能會影響操做系統的頁面調用。服務器

innodb_additional_mem_pool_size = 2M #InnoDB 用來存儲數據字典(data dictionary)信息和其它內部數據結構(internal data structures)的存儲器組合(memory pool)大小。理想的值爲 2M,在 MySQL 5.7.4 中移除。數據結構

innodb_log_file_size = 5M #日誌組中的每一個日誌文件的大小(單位 MB)。多線程

innodb_log_buffer_size = 8M #InnoDB 將日誌寫入日誌磁盤文件前的緩衝大小。理想值爲 1M 至 8M。async

innodb_flush_log_at_trx_commit = 1 #一般設置爲 1,意味着在事務提交前日誌已被寫入磁盤, 事務能夠運行更長以及服務崩潰後的修復能力。若是你願意減弱這個安全,或你運行的是比較小的事務處理,能夠將它設置爲 0 ,以減小寫日誌文件的磁盤 I/O。這個選項默認設置爲 0。

innodb_lock_wait_timeout = 50 #在回滾(rooled back)以前,InnoDB 事務將等待超時的時間(單位 秒)。

2. 一些參數的變動與解釋.

lower_case_table_names=1 # 1:表名所有轉化小寫保存在磁盤,名稱比較大小寫不敏感。其餘值:0:create table語句是的語句保存表名,大小寫敏感。2:原值保存,大小寫不敏感。

Try number of CPU's*2 for thread_concurrency  cpu#的線程總數。5.7 中,該參數被廢棄。以前版本,該參數有效,並經過show variables like '%thread%'; 查看。

thread_concurrency = 8

innodb_additional_mem_pool_size 和 innodb_use_sys_malloc 在 MySQL 5.7.4 中移除。innodb_additional_mem_pool_size ##存儲數據字典等,若是沒有,從系統中得到bin記錄到err.log日誌。後因linux系統內存管理成熟,mysql放棄本身管理這部份內存分配。URL:http://mysql.taobao.org/monthly/2016/04/01/

explicit_defaults_for_timestamp=true##爲timestap字段明確指定默認值。(true:顯示指定not null屬性,但新增的時候該值爲空,則報錯)

http://www.jb51.net/article/71052.htm 若是已運行的數據庫添加該字段可能報sql錯誤。新數據庫建議增長該參數,完善數據邏輯。

skip-name-resolve ##*跳過域名解析 ,做用解析ip到主機名(http://www.45fan.com/a/question/21253.html)

添加後:

[Warning] IP address

'192.168.1.17' could not be resolved: Name or service not known 避免上面的警告,提升鏈接性能

。推薦添加。

log_timestamps=SYSTEM#http://www.ttlsa.com/mysql/mysql-5-7-kengdieparam-log_timestamps/  日誌的時區設置,如錯誤日誌日期時區錯誤,推薦添加修復

3.MySQL的InnoDB參數詳細解讀

mysql的InnoDB參數詳解

innodb_data_home_dir

這是InnoDB表的目錄共用設置若是沒有在 my.cnf 進行設置,InnoDB 將使用MySQL的 datadir 目錄爲缺省目錄。若是設定一個空字串,能夠在 innodb_data_file_path 中設定絕對路徑。

innodb_data_file_path

單獨指定數據文件的路徑與大小。數據文件的完整路徑由 innodb_data_home_dir 與這裏所設定值的組合。 文件大小以 MB 單位指定。所以在文件大小指定後必有「M」。 InnoDB 也支持縮寫「G」, 1G = 1024M。從 3.23.44 開始,在那些支持大文件的操做系統上能夠設置數據文件大小大於 4 GB。而在另外一些操做系統上數據文件必須小於 2 GB。數據文件大小總和至少要達到 10 MB。在 MySQL-3.23 中這個參數必須在 my.cnf 中明確指定。在 MySQL-4.0.2 以及更新版本中則不需如此,系統會默認在 MySQL 的 datadir 目錄下建立一個 16 MB 自擴充(auto-extending)的數據文件 ibdata1。你一樣可使用一個 原生磁盤分區(RAW raw disk partitions(raw devices)) 做爲數據文件, 如何在 my.cnf 中詳細指定它們請查看第 12.1 節。

innodb_mirrored_log_groups

爲了保護數據而設置的日誌文件組的拷貝數目,默認設置爲 1。在 my.cnf 中以數字格式設置。

innodb_log_group_home_dir

InnoDB 日誌文件的路徑。必須與 innodb_log_arch_dir 設置相同值。 若是沒有明確指定將默認在 MySQL 的 datadir 目錄下創建兩個 5 MB 大小的 ib_logfile... 文件。

innodb_log_files_in_group

日誌組中的日誌文件數目InnoDB 以環型方式(circular fashion)寫入文件。數值 3 被推薦使用。在 my.cnf 中以數字格式設置

innodb_log_file_size

日誌組中的每一個日誌文件的大小(單位 MB)。若是 n 是日誌組中日誌文件的數目,那麼理想的數值爲 1M 至下面設置的緩衝池(buffer pool)大小的 1/n。較大的值,能夠減小刷新緩衝池的次數,從而減小磁盤 I/O。可是大的日誌文件意味着在崩潰時須要更長的時間來恢復數據。 日誌文件總和必須小於 2 GB,3.23.55 和 4.0.9 以上爲小於 4 GB。在 my.cnf 中以數字格式設置。

innodb_log_buffer_size

InnoDB 將日誌寫入日誌磁盤文件前的緩衝大小。理想值爲 1M 至 8M。大的日誌緩衝容許事務運行時不須要將日誌保存入磁盤而只到事務被提交(commit)。 所以,若是有大的事務處理,設置大的日誌緩衝能夠減小磁盤I/O。 在 my.cnf 中以數字格式設置。

innodb_flush_log_at_trx_commit

一般設置爲 1,意味着在事務提交前日誌已被寫入磁盤, 事務能夠運行更長以及服務崩潰後的修復能力。若是你願意減弱這個安全,或你運行的是比較小的事務處理,能夠將它設置爲 0 ,以減小寫日誌文件的磁盤 I/O。這個選項默認設置爲 0。

innodb_log_arch_dir

The directory where fully written log files would be archived if we used log archiving. 這裏設置的參數必須與 innodb_log_group_home_dir 相同。 從 4.0.6 開始,能夠忽略這個參數。

innodb_log_archive

這個值一般設爲 0。 既然從備份中恢復(recovery)適合於 MySQL 使用它本身的 log files,於是一般再也不須要 archive InnoDB log files。這個選項默認設置爲 0。

innodb_buffer_pool_size

InnoDB 用來高速緩衝數據和索引內存緩衝大小。 更大的設置可使訪問數據時減小磁盤 I/O。在一個專用的數據庫服務器上能夠將它設置爲物理內存的 80 %。 不要將它設置太大,由於物理內存的使用競爭可能會影響操做系統的頁面調用。在 my.cnf 中以數字格式設置。

innodb_additional_mem_pool_size

InnoDB 用來存儲數據字典(data dictionary)信息和其它內部數據結構(internal data structures)的存儲器組合(memory pool)大小。理想的值爲 2M,若是有更多的表你就須要在這裏從新分配。若是 InnoDB 用盡這個池中的全部內存,它將從操做系統中分配內存,並將錯誤信息寫入 MySQL 的錯誤日誌中。在 my.cnf 中以數字格式設置。

innodb_file_io_threads

InnoDB 中的文件 I/O 線程。 一般設置爲 4,可是在 Windows 下能夠設定一個更大的值以提升磁盤 I/O。在 my.cnf 中以數字格式設置。

innodb_lock_wait_timeout

在回滾(rooled back)以前,InnoDB 事務將等待超時的時間(單位 秒)。InnoDB 會自動檢查自身在鎖定表與事務回滾時的事務死鎖。若是使用 LOCK TABLES 命令,或在同一個事務中使用其它事務安全型表處理器(transaction safe table handlers than InnoDB),那麼可能會發生一個 InnoDB 沒法注意到的死鎖。在這種狀況下超時將用來解決這個問題。這個參數的默認值爲 50 秒。在 my.cnf 中以數字格式設置。

innodb_flush_method

這個參數僅僅與 Unix 相關。這個參數默認值爲 fdatasync。 另外一個設置項爲 O_DSYNC。這僅僅影響日誌文件的轉儲,在 Unix 下以 fsync 轉儲數據。InnoDB 版本從 3.23.40b 開始,在 Unix 下指定 fdatasync 爲使用 fsync 方式、指定 O_DSYNC 爲使用 O_SYNC 方式。因爲這在某些 Unix 環境下還有些問題因此在 'data' versions 並無被使用。

innodb_force_recovery

警告:此參數只能在你但願從一個被損壞的數據庫中轉儲(dump)數據的緊急狀況下使用! 可能設置的值範圍爲 1 - 6。查看下面的章節 'Forcing recovery' 以瞭解這個參數的具體含義。參數設置大於 0 的值表明着 InnoDB 防止用戶修改數據的安全度。從 3.23.44 開始,這個參數可用。在 my.cnf 中以數字格式設置。

innodb_fast_shutdown

InnoDB 缺乏在關閉以前清空插入緩衝。這個操做可能須要幾分鐘,在極端的狀況下能夠須要幾個小時。若是這個參數據設置爲 1 ,InnoDB 將跳過這個過程而直接關閉。從 3.23.44 和 4.0.1 開始,此參數可用。從 3.23.50 開始,此參數的默認值爲 1。

innodb_thread_concurrency

InnoDB 會試圖將 InnoDB 服務的使用的操做系統進程小於或等於這裏所設定的數值。此參數默認值爲 8。若是計算機系統性能較低或 innodb_monitor 顯示有不少線程等侍信號,應該將這個值設小一點。若是你的計算機系統有很個人處理器與磁盤系統,則能夠將這個值設高一點以充分利用你的系統資源。建議設值爲處理器數目+ 磁盤數目。 從 3.23.44 和 4.0.1 開始,此參數可用。在 my.cnf 中以數字格式設置。

相關文章
相關標籤/搜索