標籤:
以下是Mysql資料庫伺服器設定檔my.ini的詳細配置。應用場合是InnoDB引擎,2核CPU, 32位SUSE。
[client]
#password = your_password
port = 3306
socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /tmp/mysql.sock
#避免外部鎖定(預設是ON).
skip-external-locking
#索引緩衝(僅作用於MYISAM表和暫存資料表),決定了資料庫索引處理的速度,改為10M
key_buffer_size = 16K
#通訊緩衝區的最大長度。包或任何產生的/中間字串的最大大小。可改為更大的比如32M
max_allowed_packet = 1M
#所有線程開啟的表的數目(一個表使用2個檔案描述符),表數量多,就要大一些。增大該值可以增加mysqld需要的檔案描述符的數量。可以檢查Opened_tables(已經開啟的表的數量)狀態變數來檢查你是否需要增加表緩衝。可改為2048
table_open_cache = 4
#每個排序線程分配的緩衝區的大小。增加該值可以加快ORDER BY或GROUP BY操作,可改為5M
sort_buffer_size = 64K
#每個線程連續掃描時為掃描的每個表分配的緩衝區的大小,如果進行多次連續掃描,可能需要增加該值,可改為1M
read_buffer_size = 256K
#當排序後按排序後的順序讀取行時,則通過該緩衝區讀取行,避免搜尋硬碟。將該變數設定為較大的值可以大大改進ORDER BY的效能。但是,這是為每個用戶端分配的緩衝區,因此你不應將全域變數設定為較大的值。相反,只為需要運行大查詢的用戶端更改會話變數。可改為2M
read_rnd_buffer_size = 256K
#在查詢之間將通訊緩衝區重設為該值。如果語句超出該長度,緩衝區自動擴大,直到max_allowed_packet位元組。
net_buffer_length = 2K
#每個線程的堆棧大小
#thread_stack = 128K #thread_stack = 194K
#mysql伺服器安裝目錄
basedir=f:/server/mysql
#mysql資料存放區目錄
datadir=f:/server/mysql/data
#mysql資料庫編碼(防止命令列下亂碼)
character-set-server = gbk
#主從同步配置。主機是1。備機從2開始。
server-id = 1
#啟動資料庫更新二進位日誌記錄,記錄檔名首碼為mysql-bin
#log-bin=mysql-bin
# binary logging format - mixed recommended
#binlog_format=mixed
# Causes updates to non-transactional engines using statement format to be
# written directly to binary log. Before using this option make sure that
# there are no dependencies between transactional and non-transactional
# tables such as in the statement INSERT INTO t_myisam SELECT * FROM
# t_innodb; otherwise, slaves may diverge from the master.
#binlog_direct_non_transactional_updates=TRUE
# Uncomment the following if you are using InnoDB tables
#InnoDB 不會自己建立目錄,必須自己使用作業系統命令建立相應的目錄。檢查你的 MySQL 服務程式在datadir 目錄裡 有足夠的許可權建立檔案(mysql使用者組擁有)。
#這是InnoDB表的目錄共用設定。如果沒有設定,InnoDB 將使用MySQL的 datadir 目錄為預設目錄。如果設定一個空字串,可以在 innodb_data_file_path 中設定絕對路徑。
#innodb_data_home_dir = C:\\mysql\\data\\
#這裡應當預先建立好10個2048M的檔案,目前還沒有建立 innodb_data_file_path = ibdata1:2000M;ibdata2:2000M;ibdata3:2000M;ibdata4:2000M;ibdata5:2000M;ibdata6:2000M;ibdata7:2000M;ibdata8:2000M;ibdata9:2000M;ibdata10:2000M:autoextend
#innodb_data_file_path = ibdata1:10M:autoextend
#InnoDB 記錄檔的路徑。如果沒有明確指定將預設在 MySQL 的 datadir 目錄下建立兩個 5 MB 大小的ib_logfile0和ib_logfile1檔案。
#將記錄檔與資料檔案分別放在不同的物理硬碟中對提高效能通常是很有益的
#innodb_log_group_home_dir = C:\\mysql\\data\\
#表和索引資料的記憶體緩衝區,越大效能越高。但不能超過實體記憶體的50%。若64位OS,該值可以更大。32位OS受2G記憶體的限制,不能將記憶體使用量設定太高, glibc 會把進程堆增長到線程堆棧之上,這將會使伺服器崩潰。下面的接近或超過於 2G 將會很危險:innodb_buffer_pool_size + key_buffer + max_connections * (sort_buffer_size + record_buffer_size + binlog_cache_size) + max_connections * 2 MB
#每個線程將使用 2MB(MySQL AB 二進位版本為 256 KB)的堆棧,在最壞的環境下還會使用 sort_buffer_size + record_buffer_size 的附加記憶體。可改為512M
#innodb_buffer_pool_size = 16M
#主要用來儲存表結構和資料字典,表越多要求記憶體就越大,可改為16M
#innodb_additional_mem_pool_size = 2M
#日誌組中的每個記錄檔的大小(單位 MB)。如果 n 是日誌組(innodb_log_files_in_group)中記錄檔的數目,那麼理想的數值為 1M 至緩衝池(innodb_log_buffer_size)大小的 1/n。較大的值,可以減少重新整理緩衝池的次數,從而減少磁碟 I/O。但是大的記錄檔意味著在崩潰時需要更長的時間來恢複資料。可改為256M
#innodb_log_file_size = 5M
#InnoDB 將日誌寫入日誌磁碟檔案前的緩衝大小。理想值為 1M 至 8M。大的日誌緩衝允許事務運行時不需要將日誌儲存入磁碟而只到事務被提交(commit)。因此,如果有大的事務,設定大的日誌緩衝可以減少磁碟I/O。
#innodb_log_buffer_size = 8M
#1表示每次事務結束都寫日誌並重新整理磁碟;2表示每次事務寫日誌但不重新整理磁碟(每秒重新整理);0(預設值)表示每秒寫日誌並重新整理磁碟。0表示最多丟失1秒的資料,但效能最好。
#innodb_flush_log_at_trx_commit = 1
#InnoDB行鎖導致的死結等待時間(預設值是50S),可改為30
#innodb_lock_wait_timeout = 50 [mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout
以下設定僅供參考:
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
mysql參數積累 持續更新。。。