首頁  >  文章  >  資料庫  >  MySQL配置參數的詳細介紹

MySQL配置參數的詳細介紹

不言
不言轉載
2019-02-14 13:36:422184瀏覽

這篇文章帶給大家的內容是關於MySQL配置參數的詳細介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

# 以下選項會被MySQL客戶端應用程式讀取。

# 注意只有mysql附帶的客戶端應用程式保證可以讀取這段內容。

# 如果你想你自己的MySQL應用程式取得這些值。

# 需要在MySQL客戶端程式庫初始化的時候指定這些選項。

#[client]

#password = [your_password]

port = @MYSQL_TCP_PORT@

socket = @MYSQL_UNIX_ADDR@

# *** 應用自訂選項 ***

 MySQL 服務端

#[mysqld]

# 一般設定選項

port = @MYSQL_TCP_PORT@

socket = @MYSQL_UNIX_ADDR@

# back_log 是作業系統在監聽佇列中所能維持的連線數,

# 佇列保存了在 MySQL 連線管理器執行緒處理之前的連線.

# 如果你有非常高的連線速率且出現 「connection refused」 封包錯誤,

# 你就應該增加此處的值.

 檢查你的作業系統文件來取得這個變數的最大值.

# 如果將back_log設定到比你操作系統限制較高的值,將會沒有效果

back_log = 300

# 不在 TCP/IP 埠上進行監聽.

## 如果所有的行程都在同一台伺服器連接到本地的 mysqld,

# 這樣設定將是增強安全的方法

# 所有 mysqld 的連接都是透過 Unix Sockets 或命名管道進行的.

# 注意在 Windows下如果沒有開啟命名管道選項而只是用此項目

 (透過 「enable-named-pipe」 選項) 將會導致 MySQL 服務沒有任何作用!

#skip-networking

# MySQL 服務所允許的同時會話數的上限

# 其中一個連線將被 SUPER 權限保留為管理員登入.

# 即便已經達到了連線數的上限.

max_connections = 3000

# 每個客戶端連線最大的錯誤允許數量,如果達到了此限制.

# 這個客戶端將會被 MySQL 服務阻止直到執行了 「FLUSH HOSTS」 或服務重新啟動

# 非法的密碼以及其他在連結時的錯誤會增加此值.

# 檢視 「Aborted_connects」狀態來取得全域計數器.

max_connect_errors = 50

# 所有執行緒所開啟表的數量.

# 增加此值就增加了 mysqld 所需的檔案描述符的數量

# 這樣你需要確認在 [mysqld_safe] 中 “open-files-limit” 變數設定開啟檔案數量允許至少等於 table_cache 的值

table_open_cache = 4096

cache ## 允許外部檔案層級的鎖定. 開啟檔案鎖定會對效能造成負面影響

# 所以只有在您在相同的檔案上執行多個資料庫執行個體時才使用此選項(注意仍會有其他約束!)

# 或你在文件層面上使用了其他一些軟體依賴來鎖定 MyISAM 表

#external-locking

# 服務所能處理的請求包的最大大小以及服務所能處理的最大的請求大小(當與大的 BLOB 字段一起工作時相當必要)

# 每個連接獨立的大小,大小動態增加

max_allowed_pa​​cket = 32M

# 在一個事務中 binlog 為了記錄 SQL 狀態所持有的 cache 大小

# 如果你經常使用大的,多聲明的事務,你可以增加此值來獲取更大的效能.

# 所有從事務來的狀態都將被緩衝在 binlog 緩衝中然後在提交後一次性寫入到 binlog 中

# 如果事務比此值大, 會使用磁碟上的暫存檔案來取代.

 此緩衝在每個連線的交易第一次更新狀態時建立

binlog_cache_size = 4M

##獨立的記憶體表所允許的最大容量.

# 此選項為了防止意外建立超大的記憶體表導致永盡所有的記憶體資源.

max_heap_table_size = 128M

## 隨機讀取資料緩衝區使用記憶體(read_rnd_buffer_size):和順序讀取相對應,

# 當 MySQL 進行非順序讀取(隨機讀取)資料區塊的時候,會利用>這個緩衝區暫存讀取的資料

# 如根據索引資訊讀取表格數據,根據排序後的結果集與表格進行 Join 等等####### 總的來說,就是當資料區塊的讀取需要滿足>一定的順序的情況下,MySQL 就需要產生隨機讀取,進而使用到 read_rnd_buffer_size 參數所設定的記憶體緩衝區###

read_rnd_buffer_size = 16M

# 排序緩衝被用來處理類似 ORDER BY 以及 GROUP BY 隊列所引起的排序

# 如果排序後的數據無法放入排序緩衝,一個用來取代的基於磁碟的合併分類會被使用

# 檢視 「Sort_merge_passes」 狀態變數.

 在排序發生時由每個執行緒指派

sort_buffer_size = 16M

# 此緩衝被使用來優化全聯合(FULL JOINS 不帶索引的聯合).

# 類似的聯合在極大多數情況下有非常糟糕的性能表現,但是將此值設大能夠減輕效能影響.

# 透過 「Select_full_join」 狀態變數檢視全聯合的數量

# 當全聯合發生時,在每個執行緒中分配

join_buffer_size = 16M

# 我們在 cache 中保留多少執行緒用於重複使用

# 當一個客戶端斷開連線後,如果 cache 中的執行緒少於 thread_cache_size,客戶端斷開連線後,如果 cache 中的執行緒則少於 thread_cache_size,客戶客戶端線程被放入cache 中.

# 這可以在你需要大量新連接的時候極大的減少線程創建的開銷

# (一般來說如果你有好的線程模型的話,這不會有明顯的性能提升.)

thread_cache_size = 16

# 此允許應用程式給予線程系統一個提示在同一時間給予渴望被運行的線程的數量.

# 此值只對支援 thread_concurrency() 函數的系統有意義( 例如Sun Solaris).

# 你可嘗試使用 [CPU數量]*(2..4) 來作為 thread_concurrency 的值

thread_concurrency = 8

# 查詢緩衝常被用來緩衝 SELECT 的結果並且下一次相同查詢的時候不再執行直接回傳結果.

.

#.

#.

#.

#.

#.

#.

# # 打開查詢緩衝可以極大的提高伺服器速度, 如果你有大量的相同的查詢並且很少修改表.

# 查看 “Qcache_lowmem_prunes” 狀態變量來檢查是否當前值對於你的負載來說是否足夠高.

# 注意: 在你表經常變化的情況下或者如果你的查詢原文每次都不同,

# 查詢緩衝也許引起性能下降而不是性能提升.

query_cache_size = 128M

# 只有小於此設定值的結果才會被緩衝

# 此設定用來保護查詢緩衝,防止一個極大的結果集將其他所有的查詢結果都覆蓋.

query_cache_limit = 4M

# 被全文檢索索引的最小的字長.

# 你也許希望減少它,如果你需要搜尋更短字的時候.

# 注意在你修改此值之後,你需要重建你的 FULLTEXT 索引

ft_min_word_len = 8

# 如果你的系統支援 memlock() 函數,你也許希望打開此選項用以讓運行中的 mysql 在記憶體高度緊張的時候,資料在記憶體中保持鎖定並且防止可能被 swapping out

# 此選項對於效能有益

#memlock

# 當建立新表格時作為預設使用的表格類型,

# 如果在建立表示沒有特別執行表格類型,將會使用此值

default_table_type = InnoDB

# 執行緒使用的堆疊大小. 此容量的內存在每次連線時保留.

# MySQL 本身通常不會需要超過 64K的記憶體

# 如果你使用你自己的需要大量堆的 UDF 函數或你的作業系統對於某些操作需要更多的堆,你也許需要將其設定的更高一點.

thread_stack = 512K

# 設定預設的事務隔離等級.可用的等級如下:

# READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ,#SERIALIZABLE #IALIZABLE 

##transaction_isolation = REPEATABLE-READ

# 內部(內存中)臨時表的最大大小

# 如果一個表增長到比此值更大,將會自動轉換為基於磁碟的表.

# 此限制是針對單一資料表的,而不是總和.

tmp_table_size = 128M

# 開啟二元日誌功能.

## 在複製(replication)配置中,作為 MASTER 主伺服器必須打開此項目

# 如果你需要從你最後的備份中做基於時間點的恢復,你也同樣需要二進位日誌.

log-bin=mysql-bin####### 如果你在使用鍊式從伺服器結構的複製模式 (A->B->C),####### 你需要在伺服器B上開啟此項目.####### 此選項開啟在從執行緒重做過的更新的日誌, 並將其寫入從伺服器的二進位日誌.#######log_slave_updates### #### 打開全查詢日誌. 所有的由伺服器接收到的查詢 (甚至對於一個錯誤語法的查詢)####### 都會被記錄下來. 這對於調試非常有用, 在生產環境中經常關閉此項.###

#log

# 將警告列印輸出到錯誤 log 檔案. 如果你對於 MySQL 有任何問題

# 你應該開啟警告 log 並且仔細審查錯誤日誌,找出可能的原因.

#log_warnings

# 記錄慢速查詢. 慢速查詢是指消耗了比 「long_query_time」 定義的更多時間的查詢.

# 如果 log_long_format被打開,那些沒有使用索引的查詢也會被記錄.

# 如果你經常增加新查詢到已有的系統內的話. 一般來說這是一個好主意,

log_slow_queries

# 所有的使用了比這個時間(以秒為單位)更多的查詢會被認為是慢速查詢.

# 不要在這裡使用“1″, 否則會導致所有的查詢,甚至非常快的查詢頁被記錄下來(由於 MySQL 目前時間的精確度只能達到秒的等級).

long_query_time = 6

## 在慢速日誌中記錄更多的資訊.

# 一般此項目最好開啟.

# 開啟此項目會記錄使得那些沒有使用索引的查詢也被當作慢速查詢附加到慢速日誌裡

log_long_format

# 此目錄被MySQL用來保存臨時檔案.例如,

# 它被用來處理基於磁碟的大型排序,和內部排序一樣.

# 以及簡單的臨時表.

# 如果你不創建非常大的臨時文件,將其放置到 swapfs/tmpfs 文件系統上也許比較好

# 另一個選擇是你也可以將其放置在獨立的磁碟上.

# 你可以使用」;」來放置多個路徑

# 他們會按照 roud-robin方法被輪詢使用.

#tmpdir = /tmp

## *** 主從複製相關的設定

# 唯一的服務辨識號,數值位於 1 到2^32-1之間.

# 此值在master和slave上都需要設定.

# 如果 「master-host」 沒有被設定,則預設為1, 但是如果忽略此選項,MySQL不會作為master生效.

server-id = 1

# 複製的Slave (去掉master段的註解來使其生效)

 為了設定此主機作為複製的slave伺服器,你可以選擇兩種方法:

## 1) 使用 CHANGE MASTER TO 命令 (在我們的手冊中有完整描述) -

# 語法如下:

## CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,

# MASTER_USER=, MASTER_PORDORD = ;

## 你需要替換掉 , , 等被尖括號包圍的欄位以及使用master的連接埠號碼替換 (預設3306).

 範例:

## CHANGE MASTER TO MASTER_HOST='125.564.12.1′, MASTER_PORT=3306,

ORD

##MASTER_USER=joe', ='secret';

## 或

 2) 設定以下的變數. 不論如何, 在你選擇這個方法的情況下, 然後第一次啟動複製(甚至不成功的情況下,

# 例如如果你輸入錯密碼在master-password字段並且slave無法連接),

 slave會創建一個 master.info 文件,並且之後任何對於包含在此文件內的參數的變化都會被忽略

# 並且由 master.info 文件內的內容覆蓋, 除非你關閉slave服務, 刪除 master .info 並且重啟slave 服務.

 由於這個原因,你也許不想碰一下的配置(註釋掉的) 並且使用 CHANGE MASTER TO (查看上面) 來代替

## 所需要的唯一id號位於 2 和 2^32 – 1之間

# (並且和master不同)

 如果master-host被設定了.則預設值是2

# 但是省略,則不會生效

#server-id = 2

## 複製結構中的master – 必須

#master-host =

## 連接到master上時slave所用來認證的使用者名稱 – 必須

#master -user =

## 連接到master上時slave所用來認證的密碼 – 必須

#master-password =

## master監聽的連接埠.

 可選 – 預設為3306

#master-port =

 使得slave只讀.只有使用者擁有SUPER權限和在上面的slave執行緒能夠修改資料.

 你可以使用此項目去保證沒有應用程式會意外的修改slave而不是master上的資料

read_only

#*** MyISAM 相關選項

# 關鍵字緩衝的大小, 一般用來緩衝 MyISAM 表的索引區塊.

 不要將其設定大於你可用記憶體的30%,####### 因為一部分記憶體同樣被OS用來緩衝行資料###

# 甚至在你不使用 MyISAM 表的情況下, 你也需要仍舊設定起 8-64M 記憶體由於它同樣會被內部臨時磁碟表使用.

key_buffer_size = 128M

# 用來做 MyISAM 表全表掃描的緩衝大小.

# 當全表掃描需要時,在對應線程中分配.

read_buffer_size = 8M

# 當在排序之後,從一個已經排序好的序列中讀取行時,行資料將從這個緩衝中讀取來防止磁碟尋道.

# 如果你增高此值,可以提高很多ORDER BY 的效能.

# 當需要時由每個執行緒分配

read_rnd_buffer_size = 64M

## MyISAM 使用特殊的類似樹的 cache 讓突發插入

## (這些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA INFILE) 較快.

 此變數限制每個行程中此變數限制每個行程中每個行程中每個行程中沒有更快.

 此變數限制。緩衝樹的位元組數.

# 設定為 0 會關閉此最佳化.

# 為了最佳化不要將此值設定大於 「key_buffer_size」.

# 當突發插入被偵測到時此緩衝將被分配.

bulk_insert_buffer_size = 256M

# 此緩衝當 MySQL 需要在 REPAIR, OPTIMIZE, ALTER 以及 LO重建索引時被分配.

# 這在每個執行緒中被分配.所以在設定大值時需要小心.

myisam_sort_buffer_size = 256M

# MySQL 重建索引時所允許的最大臨時檔案的大小 (當 REPAIR, ALTER TABLE 或 LOAD DATA INFILE).

# 如果檔案大小比此值更大,索引會透過鍵值緩衝創建(較慢)

myisam_max_sort_file_size = 10G

## 如果被用來更快的索引建立索引所使用臨時檔案大於制定的值,那就使用鍵值緩衝方法.

# 這主要用來強制在大表中長字符串鍵去使用慢速的鍵值緩衝方法來建立索引.

myisam_max_extra_sort_file_size = 10G

## 如果一個表擁有超過一個索引, MyISAM 可以透過並行排序使用超過一個線程去修復他們.

# 這對於擁有多個 CPU 以及大量內存情況的用戶,是一個很好的選擇.

myisam_repair_threads = 1

# 自動檢查和修正沒有適當關閉的 MyISAM 表.

myisam_recover

# 預設關閉 Federated

#skip-federated

## ** * BDB 相關選項 ***

# 如果你運行的MySQL服務有BDB支援但是你不准備使用的時候使用此選項. 這會節省記憶體並且可能加速一些事.

skip-bdb

# *** INNODB 相關選項 ***

# 如果你的 MySQL 服務包含 InnoDB 支援但是不打算使用的話,

# 使用此選項會節省記憶體以及磁碟空間,並且加速某些部分

#skip-innodb

## 附加的記憶體池被 InnoDB 用來保存 metadata 資訊(5.6中不再建議使用)

# 如果 InnoDB 為此目的需要更多的內存,它會開始從 OS 這裡申請內存.

# 由於這個操作在大多數現代操作系統上已經足夠快, 你一般不需要修改此值.

# SHOW INNODB STATUS 指令會顯示當先使用的數量.

innodb_additional_mem_pool_size = 64M

# InnoDB使用一個緩衝池來儲存索引和原始資料庫來儲存索引, 不像 MyISAM.

# 這裡你設定越大,這能保證你在大多數的讀取操作時使用的是記憶體而不是硬碟,在存取表裡面資料時所需要的磁碟 I /O 越少.

# 在一個獨立使用的資料庫伺服器上,你可以設定這個變數到伺服器物理記憶體大小的80%

# 不要設定過大,否則,由於物理記憶體的競爭可能導致作業系統的換頁顛簸.

# 注意在32位元系統上你每個行程可能被限制在 2-3.5G 使用者層面記憶體限制,

## 所以不要設定的太高.

innodb_buffer_pool_size = 6G

# InnoDB 將資料保存在一個或多個資料檔案中成為表格空間.

# 如果你只有單一邏輯驅動保存你的資料,一個單一的自增檔案就夠好了.

# 其他情況下.每個裝置一個檔案一般都是個好的選擇.

# 你也可以設定 InnoDB 來使用裸碟分區 – 請參考手冊來取得更多相關內容

innodb_data_file_path = ibdata1:10M:autoextend

# 設定此選項如果你希望InnoDB表空間檔案已儲存在其他分區.

#### 預設保存在MySQL的datadir中.###

#innodb_data_home_dir =

# 用來同步IO操作的IO執行緒的數量.

# 此值在Unix下被硬編碼為8,但是在Windows磁碟I/O可能在一個大數值下表現的更好.

innodb_file_io_threads = 8

# 如果你發現 InnoDB 表空間損壞, 設定此值為非零值可能會幫助你匯出你的資料表.

# 從1開始並且增加此值知道你能夠成功的匯出表格.

#innodb_force_recovery=1

# 在 InnoDb 核心內的允許執行緒數.

# 最優值依賴應用程式,硬體以及作業系統的調度方式.

# 過高的值可能導致執行緒的互斥顛簸.

innodb_thread_concurrency = 16

# 如果設定為1 ,InnoDB 會在每次提交後刷新(fsync)事務日誌到磁碟上,

# 這提供了完整的 ACID 行為.

##如果你願意對事務安全折衷, 並且你正在運行一個小的事物, 你可以設定此值到0或2來減少由事務日誌引起的磁碟I/O

# 0代表日誌隻大約每秒寫入日誌檔案並且日誌檔案刷新到磁碟.

# 2代表日誌寫入日誌檔案在每次提交後,但是日誌檔案只有大約每秒才會刷新到磁碟上.

innodb_flush_log_at_trx_commit = 2

(說明:如果是遊戲伺服器,建議此值設定為2;如果是資料安全要求極高的應用,建議設定為1;設定為0效能最高,但若發生故障,資料可能會有遺失的危險!預設值1的意思是每一次事務提交或事務外的指令都需要把日誌寫入(flush)硬碟,這是很費時的。特別是使用電池供電快取( Battery backed up cache)時。設為2對於許多運用,特別是從MyISAM表轉過來的是可以的,它的意思是不寫入硬碟而是寫入系統快取。日誌仍然會每秒flush到硬碟,所以你通常不會丟失超過1-2秒的更新。設成0會更快一點,但安全方面比較差,即使MySQL掛了也可能會丟失事務的資料。而值2只會在整個作業系統掛了時才可能遺失資料。)

# 加速 InnoDB 的關閉. 這會阻止 InnoDB 在關閉時做全清除以及插入緩衝合併.

## 這可能極大增加關機時間,但是取而代之的是 InnoDB 可能在下次啟動時做這些操作.

#innodb_fast_shutdown

# 用來緩衝日誌資料的緩衝區的大小.

# 當此值快滿時, InnoDB 將必須刷新資料到磁碟上.

# 由於基本上每秒都會刷新一次,所以沒有必要將此值設定的太大(甚至對於長事務而言)

innodb_log_buffer_size = 16M

# 在日誌群組中每個日誌檔案的大小.

# 你應該設定日誌檔案總大小到你緩衝池大小的25%~100%

# 來避免在日誌檔案覆寫上不必要的緩衝池刷新行為.

# 不論如何, 請注意一個大的日誌檔案大小會增加恢復進程所需的時間.

innodb_log_file_size = 512M

# 在日誌群組中的檔案總數.

# 通常來說2~3是比較好的.

innodb_log_files_in_group = 3

# InnoDB 的日誌檔案位置. 預設為 MySQL 的 datadir.

# 你可以指定其到一個獨立的硬碟上或一個RAID1磁碟區上來提升其效能

##innodb_log_group_home_dir

# 在 InnoDB 緩衝池中最大允許的髒頁面的比例。

# 如果達到限額, InnoDB 會開始刷新他們防止他們妨礙到乾淨資料頁.

# 這是一個軟限制,不被保證絕對執行.

innodb_max_dirty_pages_pct = 90

# InnoDB 用來刷新日誌的方法.

## 表空間總是使用雙重寫入刷新方法

# 預設值是 「fdatasync」, 另一個是 「O_DSYNC」.

# 一般來說,如果你有硬體 RAID 控制器,並且其獨立快取採用 write-back 機制,並有電池斷電保護,那麼應該設定配置為 O_DIRECT

# 否則,大多數情況下應設為 fdatasync

#innodb_flush_method= fdatasync

# 在被回滾前,一個 InnoDB 的事務應該等待一個鎖定被批准多久.

# InnoDB 在其擁有的鎖定表中自動偵測事務死鎖並且回滾事務.

# 如果你使用 LOCK TABLES 指令, 或在同樣事務中使用除了 InnoDB 以外的其他事務安全的儲存引擎

# 那麼一個死鎖可能發生而 InnoDB 無法注意到.

# 這種情況下這個 timeout 值對於解決這個問題就非常有幫助.

innodb_lock_wait_timeout = 120

# 這個設定告知InnoDB是否需要將所有表的資料和索引存放在共享表空間裡(innodb_file_per_table = OFF) 或為每個表的資料單獨放在一個.ibd檔(innodb_file_per_table = ON)

# 每張表一個檔案允許你在drop、truncate或rebuild表時回收磁碟空間

# 這對於一些進階特性也是有必要的,例如資料壓縮,但是它不會帶來任何效能效益

innodb_file_per_table = on

[mysqldump]

# 不要在將記憶體中的整個結果寫入磁碟之前快取. 在匯出非常龐大的資料表時需要匯出此項目

quick

max_allowed_pa​​cket = 32M

[mysql]

no-auto-rehash

# 僅允許使用鍵值的 UPDATEs 和 DELETEs .

#safe-updates

[myisamchk]

key_buffer = 16M

sort_buffer_size 8M

write_buffer = 8M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

# 增加每個行程的可開啟檔案數量.

# 警告: 確認你已經將全系統限制設定的足夠高!

# 開啟大量資料表需要將此值設為大

open- files-limit = 8192

以上是MySQL配置參數的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除