久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中my.cnf的詳細(xì)講解

共計(jì) 12459 個(gè)字符,預(yù)計(jì)需要花費(fèi) 32 分鐘才能閱讀完成。

這篇文章主要講解了“mysql 中 my.cnf 的詳細(xì)講解”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學(xué)習(xí)“mysql 中 my.cnf 的詳細(xì)講解”吧!

#*** client options 相關(guān)選項(xiàng) ***#
# 以下選項(xiàng)會(huì)被 MySQL 客戶端應(yīng)用讀取。注意只有 MySQL 附帶的客戶端應(yīng)用程序保證可以讀取這段內(nèi)容。如果你想你自己的 MySQL 應(yīng)用程序獲取這些值。需要在 MySQL 客戶端庫初始化的時(shí)候指定這些選項(xiàng)。
[client]
port = 3309
socket =  /usr/local/mysql/tmp/mysql.sock
[mysqld]
!include  /usr/local/mysql/etc/mysqld.cnf

# 包含的配置文件,把用戶名,密碼文件單獨(dú)存放

port = 3309
bind-address = 0.0.0.0
server-id = 1

# 表示是本機(jī)的序號(hào)為 1, 唯一

socket =  /usr/local/mysql/tmp/mysql.sock
pid-file =  /usr/local/mysql/var/mysql.pid
basedir =  /usr/local/mysql/
datadir =  /usr/local/mysql/var/
tmpdir =  /usr/local/mysql/tmp/

# 此目錄被
MySQL 用來保存臨時(shí)文件. 例如, 它被用來處理基于磁盤的大型排序, 和內(nèi)部排序一樣,以及簡(jiǎn)單的臨時(shí)表. 如果你不創(chuàng)建非常大的臨時(shí)文件, 將其放置到
swapfs/tmpfs 文件系統(tǒng)上也許比較好。另一種選擇是你也可以將其放置在獨(dú)立的磁盤上. 你可以使用”;”來放置多個(gè)路徑,他們會(huì)按照
roud-robin 方法被輪詢使用.

slave-load-tmpdir =  /usr/local/mysql/tmp/

# 當(dāng) slave 執(zhí)行 load data infile 時(shí)用
#*** skip options 相關(guān)選項(xiàng) ***#
skip-name-resolve

# 禁止 MySQL 對(duì)外部連接進(jìn)行 DNS 解析,使用這一選項(xiàng)可以消除 MySQL 進(jìn)行 DNS 解析的時(shí)間。但需要注意,如果開啟該選項(xiàng),則所有遠(yuǎn)程主機(jī)連接授權(quán)都要使用 IP 地址方式,否則 MySQL 將無法正常處理連接請(qǐng)求!

skip-symbolic-links

# 不能使用連接文件,多個(gè)客戶可能會(huì)訪問同一個(gè)數(shù)據(jù)庫,因此這防止外部客戶鎖定 MySQL 服務(wù)器。該選項(xiàng)默認(rèn)開啟

skip-external-locking

# 不使用系統(tǒng)鎖定,要使用 myisamchk, 必須關(guān)閉服務(wù)器 , 避免 MySQL 的外部鎖定,減少出錯(cuò)幾率增強(qiáng)穩(wěn)定性。

skip-slave-start

# 啟動(dòng) mysql, 不啟動(dòng)復(fù)制

skip-networking

# 開啟該選項(xiàng)可以徹底關(guān)閉
MySQL 的 TCP/IP 連接方式,如果 WEB 服務(wù)器是以遠(yuǎn)程連接的方式訪問 MySQL
數(shù)據(jù)庫服務(wù)器則不要開啟該選項(xiàng)!否則將無法正常連接!如果所有的進(jìn)程都是在同一臺(tái)服務(wù)器連接到本地的 mysqld, 這樣設(shè)置將是增強(qiáng)安全的方法

sysdate-is-now = 1

# 把 SYSDATE 函數(shù)編程為 NOW 的別名

#*** 系統(tǒng)資源相關(guān)選項(xiàng) ***#
back_log = 50

# 接受隊(duì)列,對(duì)于沒建立
tcp 連接的請(qǐng)求隊(duì)列放入緩存中,隊(duì)列大小為 back_log,受限制與 OS 參數(shù),試圖設(shè)定 back_log
高于你的操作系統(tǒng)的限制將是無效的。默認(rèn)值為 50。對(duì)于 Linux
系統(tǒng)推薦設(shè)置為小于 512 的整數(shù)。如果系統(tǒng)在一個(gè)短時(shí)間內(nèi)有很多連接,則需要增大該參數(shù)的值

max_connections = 1000

# 指定 MySQL 允許的最大連接進(jìn)程數(shù)。如果在訪問數(shù)據(jù)庫時(shí)經(jīng)常出現(xiàn) Too Many Connections 的錯(cuò)誤提 示,則需要增大該參數(shù)值。

max_connect_errors = 10000

# 如果某個(gè)用戶發(fā)起的連接 error 超過該數(shù)值,則該用戶的下次連接將被阻塞,直到管理員執(zhí)行 flush hosts ; 命令或者服務(wù)重啟,防止黑客,非法的密碼以及其他在鏈接時(shí)的錯(cuò)誤會(huì)增加此值

open_files_limit = 10240

#MySQL 打開的文件描述符限制,默認(rèn)最小 1024; 當(dāng) open_files_limit 沒有被配置的時(shí)候,比較 max_connections* 5 和 ulimit- n 的值,哪個(gè)大用哪個(gè),當(dāng) open_file_limit 被配置的時(shí)候,比較 open_files_limit 和 max_connections* 5 的值,哪個(gè)大用哪個(gè)。

connect-timeout = 10

# 連接超時(shí)之前的最大秒數(shù), 在 Linux 平臺(tái)上,該超時(shí)也用作等待服務(wù)器首次回應(yīng)的時(shí)間

wait-timeout = 28800

# 等待關(guān)閉連接的時(shí)間

interactive-timeout = 28800

# 關(guān)閉連接之前,允許
interactive_timeout(取代了 wait_timeout)秒的不活動(dòng)時(shí)間??蛻舳说臅?huì)話 wait_timeout
變量被設(shè)為會(huì)話 interactive_timeout 變量的值。如果前端程序采用短連接,建議縮短這 2 個(gè)值,
如果前端程序采用長(zhǎng)連接,可直接注釋掉這兩個(gè)選項(xiàng),默認(rèn)配置(8 小時(shí))  

slave-net-timeout = 600

# 從服務(wù)器也能夠處理網(wǎng)絡(luò)連接中斷。但是,只有從服務(wù)器超過 slave_net_timeout 秒沒有從主服務(wù)器收到數(shù)據(jù)才通知網(wǎng)絡(luò)中斷

net_read_timeout = 30

# 從服務(wù)器讀取信息的超時(shí)

net_write_timeout = 60

# 從服務(wù)器寫入信息的超時(shí)

net_retry_count = 10

# 如果某個(gè)通信端口的讀操作中斷了,在放棄前重試多次

net_buffer_length = 16384

# 包消息緩沖區(qū)初始化為 net_buffer_length 字節(jié),但需要時(shí)可以增長(zhǎng)到 max_allowed_packet 字節(jié)

max_allowed_packet = 64M
#
服務(wù)所能處理的請(qǐng)求包的最大大小以及服務(wù)所能處理的最大的請(qǐng)求大小(當(dāng)與大的 BLOB 字段一起工作時(shí)相當(dāng)必要),
每個(gè)連接獨(dú)立的大小. 大小動(dòng)態(tài)增加。設(shè)置最大包, 限制 server 接受的數(shù)據(jù)包大小,避免超長(zhǎng) SQL 的執(zhí)行有問題
默認(rèn)值為 16M,當(dāng) MySQL 客戶端或 mysqld
服務(wù)器收到大于 max_allowed_packet 字節(jié)的信息包時(shí),將發(fā)出“信息包過大”錯(cuò)誤,并關(guān)閉連接。對(duì)于某些客戶端,如果通信信息包過大,在執(zhí)行查詢期間,可能會(huì)遇到“丟失與 MySQL 服務(wù)器的連接”錯(cuò)誤。默認(rèn)值 16M。

table_cache = 512

# 所有線程所打開表的數(shù)量. 增加此值就增加了 mysqld 所需要的文件描述符的數(shù)量這樣你需要確認(rèn)在 [mysqld_safe] 中“open-files-limit”變量設(shè)置打開文件數(shù)量允許至少 4096

thread_stack = 192K

# 線程使用的堆大小. 此容量的內(nèi)存在每次連接時(shí)被預(yù)留.MySQL 本身常不會(huì)需要超過 64K 的內(nèi)存如果你使用你自己的需要大量堆的 UDF 函數(shù)或者你的操作系統(tǒng)對(duì)于某些操作需要更多的堆, 你也許需要將其設(shè)置的更高一點(diǎn). 默認(rèn)設(shè)置足以滿足大多數(shù)應(yīng)用

thread_cache_size = 20

#
我們?cè)?cache 中保留多少線程用于重用. 當(dāng)一個(gè)客戶端斷開連接后, 如果 cache 中的線程還少于
thread_cache_size, 則客戶端線程被放入 cache
中. 這可以在你需要大量新連接的時(shí)候極大的減少線程創(chuàng)建的開銷 (一般來說如果你有好的線程模型的話,
這不會(huì)有明顯的性能提升.)服務(wù)器線程緩存這個(gè)值表示可以重新利用保存在緩存中線程的數(shù)量, 當(dāng)斷開連接時(shí)如果緩存中還有空間, 那么客戶端的線程將被放到緩存中, 如果線程重新被請(qǐng)求,那么請(qǐng)求將從緩存中讀取, 如果緩存中是空的或者是新的請(qǐng)求,那么這個(gè)線程將被重新創(chuàng)建,
如果有很多新的線程,增加這個(gè)值可以改善系統(tǒng)性能. 通過比較 Connections 和 Threads_created 狀態(tài)的變量,可以看到這個(gè)變量的作用
根據(jù)物理內(nèi)存設(shè)置規(guī)則如下:
1G  — 8
2G  — 16
3G  — 32
大于 3G  — 64

thread_concurrency = 8

# 此允許應(yīng)用程序給予線程系統(tǒng)一個(gè)提示在同一時(shí)間給予渴望被運(yùn)行的線程的數(shù)量. 該參數(shù)取值為服務(wù)器邏輯 CPU 數(shù)量×2,在本例中,服務(wù)器有
2 顆物理 CPU,而每顆物理 CPU 又支持 H.T 超線程,所以實(shí)際取值為 4 × 2 = 8. 設(shè)置
thread_concurrency 的值的正確與否,

對(duì) mysql 的性能影響很大, 在多個(gè) cpu(或多核)的情況下,錯(cuò)誤設(shè)置了
thread_concurrency 的值, 會(huì)導(dǎo)致 mysql 不能充分利用多 cpu(或多核), 出現(xiàn)同一時(shí)刻只能一個(gè)
cpu(或核)在工作的情況。thread_concurrency 應(yīng)設(shè)為 CPU 核數(shù)的 2 倍. 比如有一個(gè)雙核的 CPU,

那么 thread_concurrency 的應(yīng)該為 4; 2 個(gè)雙核的 cpu,thread_concurrency 的值應(yīng)為 8, 屬重點(diǎn)優(yōu)化參數(shù)

#*** qcache settings 相關(guān)選項(xiàng) ***#
query_cache_limit = 2M

# 不緩存查詢大于該值的結(jié)果. 只有小于此設(shè)定值的結(jié)果才會(huì)被緩沖,   此設(shè)置用來保護(hù)查詢緩沖, 防止一個(gè)極大的結(jié)果集將其他所有的查詢結(jié)果都覆蓋.

query_cache_min_res_unit = 2K

# 查詢緩存分配的最小塊大小. 默認(rèn)是 4KB,設(shè)置值大對(duì)大數(shù)據(jù)查詢有好處,但如果你的查詢都是小數(shù)據(jù)查詢,就容易造成內(nèi)存碎片和浪費(fèi)
查詢緩存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
如果查詢緩存碎片率超過 20%,可以用 FLUSH QUERY CACHE 整理緩存碎片,或者試試減小 query_cache_min_res_unit,如果你的查詢都是小數(shù)據(jù)量的話。
查詢緩存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size *100%
查詢緩存利用率在
25% 以下的話說明 query_cache_size 設(shè)置的過大,可適當(dāng)減小; 查詢緩存利用率在 80% 以上而且
Qcache_lowmem_prunes 50 的話說明 query_cache_size 可能有點(diǎn)小,要不就是碎片太多。
查詢緩存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%

query_cache_size = 64M  
# 指定 MySQL 查詢緩沖區(qū)的大小??梢酝ㄟ^在 MySQL 控制臺(tái)執(zhí)行以下命令觀察:
代碼:
SHOW VARIABLES LIKE %query_cache%
SHOW STATUS LIKE Qcache% 如果 Qcache_lowmem_prunes 的值非常大,則表明經(jīng)常出現(xiàn)緩沖不夠的情況;
如果 Qcache_hits 的值非常大,則表明查詢緩沖使用非常頻繁,如果該值較小反而會(huì)影響效率,那么可以考慮不用查詢緩沖;Qcache_free_blocks,如果該值非常大,則表明緩沖區(qū)中碎片很多。
memlock # 如果你的系統(tǒng)支持 memlock() 函數(shù), 你也許希望打開此選項(xiàng)用以讓運(yùn)行中的 mysql 在在內(nèi)存高度
緊張的時(shí)候, 數(shù)據(jù)在內(nèi)存中保持鎖定并且防止可能被 swapping out, 此選項(xiàng)對(duì)于性能有益

#*** default settings 相關(guān)選項(xiàng) ***#
default_table_type = InnoDB

# 當(dāng)創(chuàng)建新表時(shí)作為默認(rèn)使用的表類型, 如果在創(chuàng)建表示沒有特別執(zhí)行表類型, 將會(huì)使用此值

default-time-zone = system

# 服務(wù)器時(shí)區(qū)

character-set-server = utf8

#server 級(jí)別字符集

default-storage-engine = InnoDB

# 默認(rèn)存儲(chǔ)引擎

#*** tmp heap settings 相關(guān)選項(xiàng) ***#
tmp_table_size = 512M

# 臨時(shí)表的最大大小,如果超過該值,則結(jié)果放到磁盤中, 此限制是針對(duì)單個(gè)表的, 而不是總和.

max_heap_table_size = 512M

# 獨(dú)立的內(nèi)存表所允許的最大容量. 此選項(xiàng)為了防止意外創(chuàng)建一個(gè)超大的內(nèi)存表導(dǎo)致永盡所有的內(nèi)存資源.

#*** log settings 相關(guān)選項(xiàng) ***#
log-bin = mysql-bin

# 打開二進(jìn)制日志功能. 在復(fù)制 (replication) 配置中, 作為 MASTER 主服務(wù)器必須打開此項(xiàng). 如果你需要從你最后的備份中做基于時(shí)間點(diǎn)的恢復(fù), 你也同樣需要二進(jìn)制日志. 這些路徑相對(duì)于 datadir

log_slave_updates = 1

# 表示 slave 將復(fù)制事件寫進(jìn)自己的二進(jìn)制日志

log-bin-index = mysql-bin.index

# 二進(jìn)制的索引文件名

relay-log = relay-log

# 定義 relay_log 的位置和名稱,如果值為空,則默認(rèn)位置在數(shù)據(jù)文件的目錄,文件名為 host_name-relay-bin.nnnnnn(By
default, relay log file names have the form host_name-relay-bin.nnnnnn
in the data directory);

relay_log_index = relay-log.index  
#relay-log 的索引文件名

log-warnings = 1

# 將警告打印輸出到錯(cuò)誤 log 文件. 如果你對(duì)于 MySQL 有任何問題,你應(yīng)該打開警告 log 并且仔細(xì)審查錯(cuò)誤日志, 查出可能的原因.

log-error =  /usr/local/mysql/log/mysql.err

# 錯(cuò)誤日志路徑

log_output = FILE

# 參數(shù) log_output 指定了慢查詢輸出的格式,默認(rèn)為 FILE,你可以將它設(shè)為 TABLE,然后就可以查詢 mysql 架構(gòu)下的 slow_log 表了

log_slow_queries

# 指定是否開啟慢查詢?nèi)罩?該參數(shù)要被 slow_query_log 取代,做兼容性保留)

slow_query_log = 1

# 指定是否開啟慢查詢?nèi)罩? 慢查詢是指消耗了比“l(fā)ong_query_time”定義的更多時(shí)間的查詢. 如果 log_long_format 被打開, 那些沒有使用索引的查詢也會(huì)被記錄. 如果你經(jīng)常增加新查詢到已有的系統(tǒng)內(nèi)的話. 一般來說這是一個(gè)好主意,

long-query-time = 1

# 設(shè)定慢查詢的閥值,超出次設(shè)定值的 SQL 即被記錄到慢查詢?nèi)罩?,缺省值?10s. 所有的使用了比這個(gè)時(shí)間 (以秒為單位) 更多的查詢會(huì)被認(rèn)為是慢速查詢. 不要在這里使用”1″,
否則會(huì)導(dǎo)致所有的查詢, 甚至非??斓牟樵冺摫挥涗浵聛?由于 MySQL 目前時(shí)間的精確度只能達(dá)到秒的級(jí)別).

log_long_format

# 在慢速日志中記錄更多的信息. 一般此項(xiàng)最好打開,打開此項(xiàng)會(huì)記錄使得那些沒有使用索引的查詢也被作為到慢速查詢附加到慢速日志里

slow_query_log_file =  /usr/local/mysql/log/slow.log

# 指定慢日志文件存放位置,可以為空,系統(tǒng)會(huì)給一個(gè)缺省的文件 host_name-slow.log

log-queries-not-using-indexes

# 如果運(yùn)行的 SQL 語句沒有使用索引,則 mysql 數(shù)據(jù)庫同樣會(huì)將這條 SQL 語句記錄到慢查詢?nèi)罩疚募小?/p>

min_examined_row_limit=1000
# 記錄那些由于查找了多余 1000 次而引發(fā)的慢查詢

long-slow-admin-statements
# 記錄那些慢的 optimize table,analyze table 和 alter table 語句

log-slow-slave-statements

# 記錄由 Slave 所產(chǎn)生的慢查詢

general_log = 1

# 將所有到達(dá) MySQL Server 的 SQL 語句記錄下來, 默認(rèn)關(guān)閉

general_log_file =  /usr/local/mysql/log/mysql.log

#general_log 路徑

max_binlog_size = 1G

# 如果二進(jìn)制日志寫入的內(nèi)容超出給定值,日志就會(huì)發(fā)生滾動(dòng)。你不能將該變量設(shè)置為大于 1GB 或小于 4096 字節(jié)。默認(rèn)值是 1GB。如果你正使用大的事務(wù),二進(jìn)制日志還會(huì)超過 max_binlog_size

max_relay_log_size = 1G

# 標(biāo)記 relaylog 允許的最大值,如果該值為 0,則默認(rèn)值為 max_binlog_size(1G);如果不為 0,則 max_relay_log_size 則為最大的 relay_log 文件大??;

relay-log-purge = 1

# 是否自動(dòng)清空不再需要中繼日志時(shí)。默認(rèn)值為 1(啟用)

expire_logs_days = 30

# 超過 30 天的 binlog 刪除

binlog_cache_size = 1M

#
在一個(gè)事務(wù)中 binlog 為了記錄 SQL 狀態(tài)所持有的 cache
大小, 如果你經(jīng)常使用大的, 多聲明的事務(wù), 你可以增加此值來獲取更大的性能. 所有從事務(wù)來的狀態(tài)都將被緩沖在 binlog
緩沖中然后在提交后一次性寫入到 binlog 中, 如果事務(wù)比此值大,
會(huì)使用磁盤上的臨時(shí)文件來替代. 此緩沖在每個(gè)連接的事務(wù)第一次更新狀態(tài)時(shí)被創(chuàng)建.session 級(jí)別

replicate-wild-ignore-table = mysql.%

# 復(fù)制時(shí)忽略數(shù)據(jù)庫及表
slave_skip_errors=all

# 定義復(fù)制過程中從服務(wù)器可以自動(dòng)跳過的錯(cuò)誤號(hào),當(dāng)復(fù)制過程中遇到定義的錯(cuò)誤號(hào),就可以自動(dòng)跳過,直接執(zhí)行后面的 SQL 語句。
slave_skip_errors 選項(xiàng)有四個(gè)可用值,分別為:off,all,ErorCode,ddl_exist_errors。
  默認(rèn)情況下該參數(shù)值是 off,我們可以列出具體的 error code,也可以選擇 all,mysql5.6 及 MySQL Cluster NDB
7.3 以及后續(xù)版本增加了參數(shù) ddl_exist_errors,該參數(shù)包含一系列 error
code(1007,1008,1050,1051,1054,1060,1061,1068,1094,1146)
    一些 error code 代表的錯(cuò)誤如下:
   1007:數(shù)據(jù)庫已存在,創(chuàng)建數(shù)據(jù)庫失敗
   1008:數(shù)據(jù)庫不存在,刪除數(shù)據(jù)庫失敗
   1050:數(shù)據(jù)表已存在,創(chuàng)建數(shù)據(jù)表失敗
   1051:數(shù)據(jù)表不存在,刪除數(shù)據(jù)表失敗
   1054:字段不存在,或程序文件跟數(shù)據(jù)庫有沖突
   1060:字段重復(fù),導(dǎo)致無法插入
   1061:重復(fù)鍵名
   1068:定義了多個(gè)主鍵
   1094:位置線程 ID
   1146:數(shù)據(jù)表缺失,請(qǐng)恢復(fù)數(shù)據(jù)庫
   1053:復(fù)制過程中主服務(wù)器宕機(jī)
   1062:主鍵沖突 Duplicate entry %s for key %d
   
   
#*** MyISAM 相關(guān)選項(xiàng) ***#
key_buffer_size = 256M

# 指定用于索引的緩沖區(qū)大小,增加它可得到更好的索引處理性能。如果是以 InnoDB 引擎為主的 DB,專用于 MyISAM 引擎的
key_buffer_size 可以設(shè)置較小,8MB 已足夠   如果是以 MyISAM 引擎為主,可設(shè)置較大,但不能超過 4G.
在這里,強(qiáng)烈建議不使用 MyISAM 引擎,默認(rèn)都是用 InnoDB 引擎. 注意:該參數(shù)值設(shè)置的過大反而會(huì)是服務(wù)器整體效率降低!

sort_buffer_size = 2M

# 查詢排序時(shí)所能使用的緩沖區(qū)大小。排序緩沖被用來處理類似
ORDER BY 以及 GROUP BY 隊(duì)列所引起的排序. 一個(gè)用來替代的基于磁盤的合并分類會(huì)被使用. 查看
“Sort_merge_passes”狀態(tài)變量. 在排序發(fā)生時(shí)由每個(gè)線程分配 注意:該參數(shù)對(duì)應(yīng)的分配內(nèi)存是每連接獨(dú)占!如果有 100
個(gè)連接,那么實(shí)際分配的總共排序緩沖區(qū)大小為 100 × 6 =600MB, 所以, 對(duì)于內(nèi)存在 4GB 左右的服務(wù)器推薦設(shè)置為 6-8M。

read_buffer_size = 2M

# 讀查詢操作所能使用的緩沖區(qū)大小。和 sort_buffer_size 一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享!用來做 MyISAM 表全表掃描的緩沖大小. 當(dāng)全表掃描需要時(shí), 在對(duì)應(yīng)線程中分配.

join_buffer_size = 8M

# 聯(lián)合查詢操作所能使用的緩沖區(qū)大小,和
sort_buffer_size 一樣,該參數(shù)對(duì)應(yīng)的分配內(nèi)存也是每連接獨(dú)享! 此緩沖被使用來優(yōu)化全聯(lián)合(full JOINs
不帶索引的聯(lián)合). 類似的聯(lián)合在極大多數(shù)情況下有非常糟糕的性能表現(xiàn), 但是將此值設(shè)大能夠減輕性能影響. 通過
“Select_full_join”狀態(tài)變量查看全聯(lián)合的數(shù)量,當(dāng)全聯(lián)合發(fā)生時(shí), 在每個(gè)線程中分配。

read_rnd_buffer_size = 8M

#MyISAM 以索引掃描 (Random Scan) 方式掃描數(shù)據(jù)的 buffer 大小

bulk_insert_buffer_size = 64M

#MyISAM
使用特殊的類似樹的 cache 來使得突發(fā)插入(這些插入是,INSERT … SELECT, INSERT … VALUES (…),
(…), …, 以及 LOAD DATAINFILE) 更快. 此變量限制每個(gè)進(jìn)程中緩沖樹的字節(jié)數(shù). 設(shè)置為 0
會(huì)關(guān)閉此優(yōu)化. 為了最優(yōu)化不要將此值設(shè)置大于“key_buffer_size”. 當(dāng)突發(fā)插入被檢測(cè)到時(shí)此緩沖將被分配 MyISAM
用在塊插入優(yōu)化中的樹緩沖區(qū)的大小。注釋:這是一個(gè) per thread 的限制(bulk 大量). 此緩沖當(dāng) MySQL 需要在
REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA
INFILE 到一個(gè)空表中引起重建索引時(shí)被分配. 這在每個(gè)線程中被分配. 所以在設(shè)置大值時(shí)需要小心.

myisam_sort_buffer_size = 64M

#MyISAM 設(shè)置恢復(fù)表之時(shí)使用的緩沖區(qū)的尺寸, 當(dāng)在 REPAIR TABLE 或用 CREATE INDEX 創(chuàng)建索引或 ALTER TABLE 過程中排序 MyISAM 索引分配的緩沖區(qū)

myisam_max_sort_file_size = 10G
#mysql 重建索引時(shí)允許使用的臨時(shí)文件最大大小

myisam_repair_threads = 1

# 如果該值大于
1,在 Repair by sorting 過程中并行創(chuàng)建 MyISAM 表索引(每個(gè)索引在自己的線程內(nèi)). 如果一個(gè)表擁有超過一個(gè)索引,
MyISAM 可以通過并行排序使用超過一個(gè)線程去修復(fù)他們. 這對(duì)于擁有多個(gè) CPU 以及大量?jī)?nèi)存情況的用戶, 是一個(gè)很好的選擇.

myisam_recover = 64K
# 允許的 GROUP_CONCAT()函數(shù)結(jié)果的最大長(zhǎng)度
transaction_isolation = REPEATABLE-READ # 設(shè)定默認(rèn)的事務(wù)隔離級(jí)別. 可用的級(jí)別如下:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ,SERIALIZABLE
1.READ UNCOMMITTED- 讀未提交 2.READ COMMITTE- 讀已提交 3.REPEATABLE READ - 可重復(fù)讀 4.SERIALIZABLE - 串行
# *** INNODB 相關(guān)選項(xiàng) ***#
skip-innodb

# 如果你的 MySQL 服務(wù)包含 InnoDB 支持但是并不打算使用的話, 使用此選項(xiàng)會(huì)節(jié)省內(nèi)存以及磁盤空間, 并且加速某些部分

innodb_file_per_table = 1

# InnoDB 為獨(dú)立表空間模式,每個(gè)數(shù)據(jù)庫的每個(gè)表都會(huì)生成一個(gè)數(shù)據(jù)空間
獨(dú)立表空間優(yōu)點(diǎn):
1.每個(gè)表都有自已獨(dú)立的表空間。
2.每個(gè)表的數(shù)據(jù)和索引都會(huì)存在自已的表空間中。
3.可以實(shí)現(xiàn)單表在不同的數(shù)據(jù)庫中移動(dòng)。
4.空間可以回收(除 drop table 操作處,表空不能自已回收)
缺點(diǎn):
1. 單表增加過大,如超過 100G
結(jié)論:
共享表空間在 Insert 操作上少有優(yōu)勢(shì)。其它都沒獨(dú)立表空間表現(xiàn)好。當(dāng)啟用獨(dú)立表空間時(shí),請(qǐng)合理調(diào)整:innodb_open_files

innodb_status_file = 1

# 啟用 InnoDB 的 status file,便于管理員查看以及監(jiān)控等

innodb_open_files = 2048

# 限制 Innodb 能打開的表的數(shù)據(jù),如果庫里的表特別多的情況,請(qǐng)?jiān)黾舆@個(gè)。這個(gè)值默認(rèn)是 300

innodb_additional_mem_pool_size = 100M

# 設(shè)置 InnoDB 存儲(chǔ)引擎用來存放數(shù)據(jù)字典信息以及一些內(nèi)部數(shù)據(jù)結(jié)構(gòu)的內(nèi)存空間大小,所以當(dāng)我們一個(gè) MySQL Instance 中的數(shù)據(jù)庫對(duì)象非常多的時(shí)候,是需要適當(dāng)調(diào)整該參數(shù)的大小以確保所有數(shù)據(jù)都能存放在內(nèi)存中提高訪問效率的。 

innodb_buffer_pool_size = 2G

# 包括數(shù)據(jù)頁、索引頁、插入緩存、鎖信息、自適應(yīng)哈希所以、數(shù)據(jù)字典信息.InnoDB
使用一個(gè)緩沖池來保存索引和原始數(shù)據(jù), 不像 MyISAM. 這里你設(shè)置越大, 你在存取表里面數(shù)據(jù)時(shí)所需要的磁盤 I/O
越少. 在一個(gè)獨(dú)立使用的數(shù)據(jù)庫服務(wù)器上, 你可以設(shè)置這個(gè)變量到服務(wù)器物理內(nèi)存大小的
80%, 不要設(shè)置過大, 否則, 由于物理內(nèi)存的競(jìng)爭(zhēng)可能導(dǎo)致操作系統(tǒng)的換頁顛簸. 注意在 32 位系統(tǒng)上你每個(gè)進(jìn)程可能被限制在 2-3.5G
用戶層面內(nèi)存限制, 所以不要設(shè)置的太高.

innodb_write_io_threads = 4
innodb_read_io_threads = 4
# innodb 使用后臺(tái)線程處理數(shù)據(jù)頁上的讀寫 I/O(輸入輸出)請(qǐng)求, 根據(jù)你的 CPU 核數(shù)來更改, 默認(rèn)是 4
# 注: 這兩個(gè)參數(shù)不支持動(dòng)態(tài)改變, 需要把該參數(shù)加入到 my.cnf 里,修改完后重啟 MySQL 服務(wù), 允許值的范圍從 1-64

innodb_data_home_dir =  /usr/local/mysql/var/

# 設(shè)置此選項(xiàng)如果你希望 InnoDB 表空間文件被保存在其他分區(qū). 默認(rèn)保存在 MySQL 的 datadir 中.

innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend
#InnoDB 將數(shù)據(jù)保存在一個(gè)或者多個(gè)數(shù)據(jù)文件中成為表空間. 如果你只有單個(gè)邏輯驅(qū)動(dòng)保存你的數(shù)據(jù), 一個(gè)單個(gè)的自增文件就足夠好了. 其他情況下. 每個(gè)設(shè)備一個(gè)文件一般都是個(gè)好的選擇. 你也可以配置 InnoDB 來使用裸盤分區(qū) – 請(qǐng)參考手冊(cè)來獲取更多相關(guān)內(nèi)容

innodb_file_io_threads = 4

# 用來同步 IO 操作的 IO 線程的數(shù)量. 此值在 Unix 下被硬編碼為 4, 但是在 Windows 磁盤 I/O 可能在一個(gè)大數(shù)值下表現(xiàn)的更好.

innodb_thread_concurrency = 16
# 在
InnoDb 核心內(nèi)的允許線程數(shù)量,InnoDB 試著在 InnoDB
內(nèi)保持操作系統(tǒng)線程的數(shù)量少于或等于這個(gè)參數(shù)給出的限制, 最優(yōu)值依賴于應(yīng)用程序, 硬件以及操作系統(tǒng)的調(diào)度方式. 過高的值可能導(dǎo)致線程的互斥顛簸. 默認(rèn)設(shè)置為
0, 表示不限制并發(fā)數(shù),這里推薦設(shè)置為 0,更好去發(fā)揮 CPU 多核處理能力,提高并發(fā)量

innodb_flush_log_at_trx_commit = 1

# 如果設(shè)置為 1 ,InnoDB 會(huì)在每次提交后刷新 (fsync) 事務(wù)日志到磁盤上, 這提供了完整的 ACID 行為. 如果你愿意對(duì)事務(wù)安全折衷, 并且你正在運(yùn)行一個(gè)小的食物, 你可以設(shè)置此值到 0 或者 2 來減少由事務(wù)日志引起的磁盤 I/O
0 代表日志只大約每秒寫入日志文件并且日志文件刷新到磁盤.
2 代表日志寫入日志文件在每次提交后, 但是日志文件只有大約每秒才會(huì)刷新到磁盤上.

innodb_log_buffer_size = 8M

# 用來緩沖日志數(shù)據(jù)的緩沖區(qū)的大小. 當(dāng)此值快滿時(shí), InnoDB 將必須刷新數(shù)據(jù)到磁盤上. 由于基本上每秒都會(huì)刷新一次, 所以沒有必要將此值設(shè)置的太大(甚至對(duì)于長(zhǎng)事務(wù)而言)

innodb_log_file_size = 500M

# 事物日志大小. 在日志組中每個(gè)日志文件的大小,你應(yīng)該設(shè)置日志文件總合大小到你緩沖池大小的 5%~100%,來避免在日志文件覆寫上不必要的緩沖池刷新行為. 不論如何, 請(qǐng)注意一個(gè)大的日志文件大小會(huì)增加恢復(fù)進(jìn)程所需要的時(shí)間.

innodb_log_files_in_group = 2

# 在日志組中的文件總數(shù). 通常來說 2~3 是比較好的.

innodb_log_group_home_dir =  /usr/local/mysql/var/
#
InnoDB 的日志文件所在位置. 默認(rèn)是 MySQL 的 datadir. 你可以將其指定到一個(gè)獨(dú)立的硬盤上或者一個(gè) RAID1
卷上來提高其性能 innodb_max_dirty_pages_pct = 90 #innodb 主線程刷新緩存池中的數(shù)據(jù),使臟數(shù)據(jù)比例小于
90%, 這是一個(gè)軟限制, 不被保證絕對(duì)執(zhí)行.

innodb_lock_wait_timeout = 50

#InnoDB 事務(wù)在被回滾之前可以等待一個(gè)鎖定的超時(shí)秒數(shù)。InnoDB 在它自己的 鎖定表中自動(dòng)檢測(cè)事務(wù)死鎖并且回滾事務(wù)。InnoDB 用 LOCK TABLES 語句注意到鎖定設(shè)置。默認(rèn)值是 50 秒

innodb_flush_method = O_DSYNC

# InnoDB 用來刷新日志的方法. 表空間總是使用雙重寫入刷新方法. 默認(rèn)值是“fdatasync”, 另一個(gè)是“O_DSYNC”.

innodb_force_recovery=1
# 如果你發(fā)現(xiàn) InnoDB 表空間損壞, 設(shè)置此值為一個(gè)非零值可能幫助你導(dǎo)出你的表. 從 1 開始并且增加此值知道你能夠成功的導(dǎo)出表.

innodb_fast_shutdown

# 加速 InnoDB 的關(guān)閉. 這會(huì)阻止 InnoDB 在關(guān)閉時(shí)做全清除以及插入緩沖合并. 這可能極大增加關(guān)機(jī)時(shí)間, 但是取而代之的是 InnoDB 可能在下次啟動(dòng)時(shí)做這些操作.
# *** 其他 相關(guān)選項(xiàng) ***#
[mysqldump]
quick

# 支持較大數(shù)據(jù)庫的轉(zhuǎn)儲(chǔ),在導(dǎo)出非常巨大的表時(shí)需要此項(xiàng)。增加該變量的值十分安全,這是因?yàn)閮H當(dāng)需要時(shí)才會(huì)分配額外內(nèi)存。例如,僅當(dāng)你發(fā)出長(zhǎng)查詢或 mysqld 必須返回大的結(jié)果行時(shí) mysqld 才會(huì)分配更多內(nèi)存。該變量之所以取較小默認(rèn)值是一種預(yù)防措施,以捕獲客戶端和服務(wù)器之間的錯(cuò)誤信息包,并確保不會(huì)因偶然使用大的信息包而導(dǎo)致內(nèi)存溢出。
如果你正是用大的 BLOB 值,而且未為 mysqld 授予為處理查詢而訪問足夠內(nèi)存的權(quán)限,也會(huì)遇到與大信息包有關(guān)的奇怪問題。如果懷疑出現(xiàn)了該情況,請(qǐng)嘗試在 mysqld_safe 腳本開始增加 ulimit
-d 256000,并重啟 mysqld。

[mysql]
auto-rehash

# 允許通過 TAB 鍵提示

default-character-set = utf8

# 數(shù)據(jù)庫字符集

connect-timeout = 3
[mysqld_safe]

open-files-limit = 8192

# 增加每個(gè)進(jìn)程的可打開文件數(shù)量. 確認(rèn)你已經(jīng)將全系統(tǒng)限制設(shè)定的足夠高! 打開大量表需要將此值設(shè)大

感謝各位的閱讀,以上就是“mysql 中 my.cnf 的詳細(xì)講解”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì) mysql 中 my.cnf 的詳細(xì)講解這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-28發(fā)表,共計(jì)12459字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 盘锦市| 晋城| 江西省| 扬中市| 兴隆县| 长岛县| 余干县| 嘉荫县| 饶阳县| 南开区| 罗城| 新兴县| 铜鼓县| 怀仁县| 磐安县| 离岛区| 柘荣县| 平江县| 密山市| 米脂县| 富裕县| 溆浦县| 五家渠市| 根河市| 任丘市| 石楼县| 科尔| 玉龙| 公主岭市| 武宁县| 桂平市| 崇左市| 昆山市| 敖汉旗| 堆龙德庆县| 白城市| 元江| 大姚县| 乐安县| 和静县| 石首市|