InnoDB參數詳解

来源:http://www.cnblogs.com/liulei-LL/archive/2017/10/19/7696120.html
-Advertisement-
Play Games

1.查詢5.5版本的InnoDB參數並註釋:[root@localhost etc]# grep -i innodb my.cnf;t_innodb; otherwise, slaves may diverge from the master.Uncomment the following if y... ...


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

t_innodb; otherwise, slaves may diverge from the master.

Uncomment the following if you are using InnoDB tables#如果要使用InnoDB下麵的都是需要配置的.

innodb_data_home_dir = /usr/local/mysql/data #InnoDB表的目錄共用設置。如果沒有在 my.cnf 進行設置,InnoDB 將使用MySQL的 datadir 目錄為預設目錄

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。

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 中以數字格式設置。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載自:http://www.cnblogs.com/BlackWizard2016/p/5143816.html,侵刪,只為學習所用. 1.1 什麼是集群 簡單的說,集群(cluster)就是一組電腦,它們作為一個整體向用戶提供一組網路資源。這些單個的電腦系統就是集群的節點(node)。一個理 ...
  • 一、基礎 1、說明:創建資料庫 CREATE DATABASE database-name 2、說明:刪除資料庫 drop database 資料庫名 3、說明:備份sql server 創建 備份數據的 device USE master EXEC sp_addumpdevice 'disk',  ...
  • /*學習事物基本語法*/ /*增加課室名的唯一索引*/ALTER table class add constraint uni_ClassName unique(name) /*創建存儲過程,其中增加教師,並增加課室*/CREATE proc pro_AddClass @className varc ...
  • //班主任表 CREATE TABLE [dbo].[teacher]( [id] [int] IDENTITY(1,1) NOT NULL primary key, [name] [varchar](50) NOT NULL, [sj] [datetime] default(getdate()) ...
  • 游標 游標存在意義:解決“select *”返回空、多行記錄問題,但凡select,就可能多行結果集,也就需要用游標。 游標分4步走:cursor、open、fetch、close 可能省略open、close,用for ... in ... loop ... end loop; 1、靜態游標: ( ...
  • 以前寫過一篇文章IO is frozen on database xxx, No user action is required“, 主要是介紹PlateSpin在伺服器層面做DR備份時,SQL Server日誌裡面有"I/O is frozen on database xxxx"以及“I/O wa... ...
  • 一、所需軟體 二、安裝說明 三、安裝 1、下載yum源。 官網地址:http://dev.mysql.com/downloads/repo/yum/ centos7系統: wget http://dev.mysql.com/get/mysql57-community-release-el7-7.no ...
  • 一、Sql * plus 常用命令 1.關於登錄,連接的幾個命令 1) conn[nect] //例 conn system/manager 用法 conn 用戶名/密碼 @網路服務名 (as sysdba/sysoper) 當特權用戶登錄的時候,必須帶上 as sysdba/sysope 比如 s ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...