mysql linux文件_MySQL在Linux系统下配置文件详解
在日常的的開發過程中接觸到了SQLServer和MySQL數據庫的操作性問題,可能是以前接觸的都是SQL Server,才開始接觸MySQL,總感覺使用MySQL沒有使用SQLserver那么順手,一些關鍵的系統函數,比如說開窗、行轉列、列轉行、自增字段等一系列的問題,雖然最后都找到了替代的方案,但是解決性能問題還是頗費了一些功夫的。對比了一下SQL Server、MySQL在Windows環境下、MySQL在linux環境下的性能,同樣的一個存儲過程,在存儲過程中建立了八個臨時表,并循環向每個臨時表里插入了十萬條數據,字段大概有十二個左右,最后查詢出數據,在SQL Server下用了6秒時間,在Linux下的MySQL中用了3秒多的時間,而在Windows環境下的MySQL改為了一千條數據耗費了六十多秒的時間。總的來說性能上的差別還是很大的,下面就來談談Linux下的MySQL的配置文件。
設置慢查詢時間的長度,以及慢查詢日志存放的位置:
long_query_time=1
slow_query_log_file = /var/log/mysql/mysql-slow.log
避免Mysql的外部鎖定,減少出錯幾率,增強穩定性:
skip-external-locking
禁止MySql對外部連接進行DNS解析,使用這一選項可以消除MySQL進行NDS解析的時間。但##需要注意的是:如果開啟該選項,則所有遠程主機連接授權都要使用IP地址方式了,否則MYSQL將無法正常處理連接請求。
skip-name-resolve
back_log參數的值指出在MySQL暫時停止響應新請求之前,短時間內的多少個請求可以被存,在對堆棧中,如果系統短時間內有很多連接,則需>要增大該參數的值,該參數值指定到來的TCP/IP連接的監聽隊列的大小。不同的操作系統在這個隊列的大小有自己的限制,將back_log設定得高于操作系統的限制將是無效的,其默認值為50,對于LINUX系統而言,推薦設置為小于512的整數:
back_log=1200 binlog_cache_size=64M
索引緩沖區大小,增加它可得到更好的索引處理性能,對于內存在4GB左右的服務器,該參數可設置為256M或384M。如果該參數值設置的過大>反而會使服務器的整體效率降低:
key_buffer_size=512M
設定在網絡傳輸中一次消息傳輸量的最大值,系統默認值為1MB,最大值是1GB,必須設定為1024的倍數,單位為字節:
max_allowed_packet=64M
設置MySQL每個線程的堆棧大小,默認值足夠大,可滿足普通操作。可設置范圍為128KB至4GB,默認192K:
thread_stack=64M sort_buffer_size=64M
max_connect_errors = 6000 open_files_limit = 65535
table_open_cache=256 max_heap_table_size=16M
設置Thread Cache池中可以緩存的連接池線程最大數量,可設置為0-16384,默認為0。1GB內存我們配置為8,2GB內存我們配置為16,4GB或4GB以上內在我們配置為64:
thread_cache_size=128
指定Mysql查詢緩沖區的大小,可以通過在Mysql控制臺觀察,如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖不夠的情況,如果 Qcache_hits的值非常大,則表明查詢緩沖使用的非常頻繁 :
query_cache_size=64M
query_cache_limit=64M
設置內在臨時表最大值,如果超過該值,則會將臨時表寫入磁盤,其范圍為1KB至4GB:
tmp_table_size=64M
指定MYSQL允許的最大連接進程數,如果在訪問程序時經常出現TOO MANY CONNECTIONS的錯誤提示,則需要增大該參數值:
max_connections=1500
max_user_connections=1500
指定一個請求的最大連接時間,對于4GB左右內在的服務器來說,可以將其設置為5-10:
wait_timeout=100
該參數取值為服務器邏輯CPU數量*2,比如,服務器有兩個物理CPU,每個物理CPU支持HT超線程,所以實際取值4*2=8,這也是目前雙四核主流 服務器的配置:
join_buffer_size = 64M
開啟該選項可以徹底關閉MYSQL的TCP/IP連接方式,如果WEB服務器是以遠程連接的方式訪問MYSQL的數據庫服務器,則不要開啟該選項,否則>將無法正常連接。 skip-networking?? 抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了調整這個值。默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush) 硬盤,這是很費時的。特別是使用電池供電緩存(Battery backed up cache)時。設成2對于很多運用,特別是從MyISAM表轉過來的是可以的>,它的意思是不寫入硬盤而是寫入系統緩存。日志仍然會每秒flush到硬 盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安>全方面比較差,即使MySQL掛了也可能會丟失事務的數據。而值2只會在整個操作系#統 掛了時才可能丟數據:
innodb_flush_log_at_trx_commit=2
這是 InnoDB 存儲引擎的事務日志所使用的緩沖區。類似于 Binlog Buffer,InnoDB 在寫事務日志的時候,為了提高性能,也是先將信息寫>入 Innofb Log Buffer 中,當滿足 innodb_flush_log_trx_commit 參數所設置的相應條件(或者日志緩沖區寫滿)之后,才會將日志寫到文>件(或者同步到磁盤)中。可以通過 innodb_log_buffer_size 參數設置其可以使用的最大內存空間:
innodb_log_buffer_size=64M
innodb_buffer_pool_size=64M
innodb_log_file_size=1G
innodb_file_per_table=1
innodb_read_io_threads=10
innodb_write_io_threads=10
innodb_flush_method=O_DIRECT
innodb_io_capacity=1000
innodb_io_capacity_max=1000
innodb_lru_scan_depth=500
innodb_thread_concurrency=0
innodb_autoinc_lock_mode=2
innodb_log_files_in_group=3
innodb_max_dirty_pages_pct=90
innodb_lock_wait_timeout=100
bulk_insert_buffer_size = 16M
innodb_thread_concurrency = 8
innodb_purge_threads = 1
tmp_table_size 的默認大小是 32M。如果一張臨時表超出該大小,MySQL產生一個 The table tbl_name is full 形式的錯誤,如果你做很多 #高級 GROUP BY 查詢,增加 tmp_table_size 值:
tmp_table_size=512M
隨機讀取數據緩沖區使用內存(read_rnd_buffer_size):和順序讀取相對應,當 MySQL 進行非順序讀取(隨機讀取)數據塊的時候,會利用>這個緩沖區暫存讀取的數據。如根據索引信息讀取表數據,根據排序后的結果集與表進行Join等等。總的來說,就是當數據塊的讀取需要滿足>一定的順序的情況下,MySQL 就需要產生隨機讀取,進而使用到 read_rnd_buffer_size 參數所設置的內存緩沖區:
read_rnd_buffer_size=128M
你最好在定義數據庫命名規則的時候就全部采用小寫字母加下劃線的組合,而不使用任何的大寫字母:
lower_case_table_names=1
設置校驗模式 :
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
默認配置沒開查詢緩存:
explicit_defaults_for_timestamp
需要記錄進制日志的數據庫.如果有多個數據庫可用逗號分隔,或者使用多個binlog-do-db選項:
binlog-do-db=showeedb
不需要記錄進制日志的數據庫.如果有多個數據庫可用逗號分隔,或者使用多個binlog-do-db選項? :
binlog-ignore-db=mysql
需要進行同步的數據庫.如果有多個數據庫可用逗號分隔,或者使用多個replicate-do-db選項:
replicate-do-db=showeedb
不需要同步的數據庫.如果有多個數據庫可用逗號分隔,或者使用多個replicate-ignore-db選項:
replicate-ignore-db=mysql,test
同步參數:
server-id=1
log_bin=/var/log/mysql/mysql-bin
保證slave掛在任何一臺master上都會接收到另一個master的寫入信息:
log-slave-updates
sync_binlog=1
auto_increment_offset=1
auto_increment_increment=2
過濾掉一些沒什么大問題的錯誤:
slave-skip-errors=all
總結
以上是生活随笔為你收集整理的mysql linux文件_MySQL在Linux系统下配置文件详解的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: ASP.NET MVC 5 入门教程 (
 - 下一篇: java json解析哪个好_java常