mysql性能優化之服務器參數配置-內存配置


MySQL服務器參數介紹
  • MySQL獲取配置信息路徑

    • 命令行參數

      mysqld_safe --datadir=/data/sql_data
      
    • 配置文件

      mysqld --help --verbose | grep -A 1 'Default options'
      /etc/my.cnf/ /etc/mysql/my.cnf /home/mysql/my.cnf
      ~/.my.cnf
      
    • MySQL配置參數的作用域

      • 全局參數(需要重新登錄才能生效)

        set global 參數名=參數值;

        set @@global.參數名:=參數值;

      • 會話參數

        set[session]參數名=參數值;

        set @@session.參數名 := 參數值;
        內存配置相關參數

  • 確認可以使用的內存的上限

  • 確認MySQL的每個連接使用的內存(都是為線程分配的)

    • sort_buffer_size 排序緩沖區大小
    • join_buffer_size 連接緩沖區的大小
    • read_buffer_size 分配的值必須是4k的倍數
    • read_rnd_buffer_size
  • 確認需要為操作系統保留多少內存

  • 如何為緩存池分配內存(Innodb嚴重依賴緩存池)

    InnoDB緩存池(InnoDB buffer pool)是提升InnoDB提升性能的關鍵,它既可以緩存數據,又可以緩存索引,甚至其他的管理數據(元數據、行級鎖)等。可以使用show variables like 'innodb%pool%'; 來查看相關的參數選項。
    
    • Innodb_buffer_pool_size

      總內存-(每個線程所需要的內存*連接數)-系統保留內存

      在一個獨立的只使用InnoDB引擎的MySQL服務器中,根據經驗,推薦設置innodb-buffer-pool-size為服務器總可用內存的80%。

    • innodb_buffer_pool_instance

      innodb_buffer_pool_instance默認值是1,表示InnoDB緩存池被划分為一個區域,適當的增加該參數值,可以提升InnoDB的並發性能。
      
    • innodb_additional_mem_pool_size

      指定InnoDB用於來存儲數據字典和其他內部數據的緩存大小,默認值是2M.InnoDB的表個數越多,就應該適當的增加該參數的大小。
      
    • key_buffer_size

      select sum(index_length)

      from information_schema.tables where engine='misaim'

      key_buffer_size指定索引緩沖區的大小,它決定索引處理的速度,尤其是索引讀的速度。通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。比例key_reads /key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE ‘key_read%'獲得)。
      key_buffer_size只對MyISAM表起作用。即使你不使用MyISAM表,但是內部的臨時磁盤表是MyISAM表,也要使用該值。可以使用檢查狀態值created_tmp_disk_tables得知詳情。
      對於1G內存的機器,如果不使用MyISAM表,推薦值是16M(8-64M)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM