Mysql優化配置

在mysql 中輸入以下命令,可自動計算本身的當前配置最大的內存消耗mysql

語句:sql

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';數據庫

SHOW VARIABLES LIKE 'innodb_additional_mem_pool_size';windows

SHOW VARIABLES LIKE 'innodb_log_buffer_size';緩存

SHOW VARIABLES LIKE 'thread_stack';服務器

SET @kilo_bytes = 1024;tcp

SET @mega_bytes = @kilo_bytes * 1024;性能

SET @giga_bytes = @mega_bytes * 1024;優化

SET @innodb_buffer_pool_size = 2 * @giga_bytes;線程

SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;

SET @innodb_log_buffer_size = 8 * @mega_bytes;

SET @thread_stack = 192 * @kilo_bytes;

SELECT

( @@key_buffer_size + @@query_cache_size + @@tmp_table_size

+ @innodb_buffer_pool_size + @innodb_additional_mem_pool_size

+ @innodb_log_buffer_size

+ @@max_connections * (

@@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size

+ @@join_buffer_size + @@binlog_cache_size + @thread_stack

) ) / @giga_bytes AS MAX_MEMORY_GB;

 

 

Linux環境下是my.cnf;可是windows環境下是my.ini

如下的配置是針對

針對my.cnf文件進行優化:

[mysqld]

skip-locking (取消文件系統的外部鎖)

skip-name-resolve (不進行域名反解析,注意由此帶來的權限/受權問題)

key_buffer_size = 256M (分配給MyISAM索引緩存的內存總數)對於內存在4GB左右的服務器該參數可設置爲256M或384M。

   注意:該參數值設置的過大反而會是服務器總體效率下降!

  max_allowed_packet = 4M (容許最大的包大小)

  thread_stack = 256K (每一個線程的大小)

  table_cache = 128K (緩存可重用的線程數)

  back_log = 2000 (臨時中止響應新請求前在短期內能夠堆起多少請求,若是你須要在短期內容許大量鏈接,能夠增長該數值)

  sort_buffer_size = 2M (分配給每一個線程中處理排序)

  read_buffer_size = 2M (讀取的索引緩衝區大小)

  join_buffer_size = 2M (分配給每一個線程中處理掃描錶鏈接及索引的內存)

  myisam_sort_buffer_size = 64M (myisam引擎排序緩衝區的大小)

  table_cache = 512 (緩存數據表的數量,避免重複打開表的開銷)

  thread_cache_size = 64 (緩存可重用線程數,見笑建立新線程的開銷)

  query_cache_size = 64M (控制分配給查詢緩存的內存總量)

  tmp_table_size = 256M (指定mysql緩存的內存大小)

  max_connections = 768 (最大鏈接數)指mysql整個的最大鏈接數

max_connect_errors = 10000 (最大鏈接錯誤數據)

  wait_timeout = 10 (超時時間,能夠避免攻擊)

  thread_concurrency = 8 (根據cpu數量來設置)

  skip-bdb 禁用沒必要要的引擎

  skip-networking (關閉mysql tcp/ip鏈接方式)

  Log-slow-queries = /var/log/mysqlslowqueries.log

  long_query_time = 4 (設定慢查詢的時間)

  skip-host-cache (提升mysql速度的)

  open_files_limit = 4096 (打開文件數)

interactive_timeout = 10 (服務器在關閉它前在一個交互鏈接上等待行動的秒數)

max_user_connections = 500 (最大用戶鏈接數)

 

key_buffer_size                   默認爲218       調到128最佳

query_cache_size  

tmp_table_size                   默認爲16M        調到64-256最掛

 

innodb_thread_concurrency=8        你的服務器CPU有幾個就設置爲幾,默認爲8

 

table_cache=1024 物理內存越大,設置就越大.默認爲2402,調到512-1024最佳

innodb_additional_mem_pool_size=8M 默認爲2M

innodb_flush_log_at_trx_commit=0 等到innodb_log_buffer_size列隊滿後再統一儲存,默認爲1

innodb_log_buffer_size=8M           默認爲1M,默認寫日誌緩存大小,用來設置緩存大小

 

read_buffer_size=4M                   默認爲64K

read_rnd_buffer_size    隨機讀 緩存區  默認爲256K

sort_buffer_size=32M                     默認爲256K

max_connections=1024                  默認爲1210

thread_cache_size=120              默認爲60

innodb_buffer_pool_size=360M 參數表示緩衝池字節大小,InnoDB緩存表和索引數據的內存區域。mysql默認的值是128M;建議值360M

innodb_log_file_size = 512M 寫入日誌文件的大小,官網文檔設置爲512M,相似於Oracle中redlog的做用,若是配置過小了將頻繁寫入影響性能

innodb_log_files_in_group = 2 指定你有幾個日誌組

performance_schema_max_table_instances=600 //檢測的表對象的最大數目

table_definition_cache=400 //緩存在frm文件中文件數量

//能夠存儲在緩存中的定義的表數量。若是您使用大量的表,您能夠建立一個大的表定義緩存,以加快表的打開。

//表定義緩存佔用較少的空間,不使用文件描述符,不像正常表緩存。最小值和默認值都是400。

table_open_cache=256 //全部線程的開放表的數目。增長這個值增長,mysqld須要文件描述符的數量

//緩存數據文件的描述符相關信息

 

開啓mysql慢查詢的查詢日誌:

查詢日誌相關內容:

show variables like '%quer%';

參數設置:

windows下是mysql.ini文件,Linux下是mysql.cnf文件

slow_query_log=ON         //將日誌打開

slow_query_log_file="C:/ProgramData/MySQL/MySQL Server 5.6/data/mysql_slow.log" 

//慢SQL語句保存的日誌文件

long_query_time=3         //慢SQL定義的時間

開啓日誌記錄文件:

set global slow_query_log='ON'              //很重要,須要數據庫管理員用戶權限進行執行

 

對以上配置進行更改後都須要重啓mysql服務纔能有效

相關文章
相關標籤/搜索