日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL-DB参数、内存、I/O、安全等相关参数设置

發布時間:2025/3/21 数据库 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL-DB参数、内存、I/O、安全等相关参数设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 生猛干貨
  • 官方文檔
  • 服務器參數介紹
    • MySQL獲取信息配置領
    • MySQL配置參數的作用域
  • 內存配置相關參數
  • I/O相關配置參數
    • Innodb I/O 相關的配置
    • MyISAM I/O 相關的配置
  • 安全相關配置參數
  • 其它常用配置參數
  • 小結
  • 搞定MySQL

生猛干貨

帶你搞定MySQL實戰,輕松對應海量業務處理及高并發需求,從容應對大場面試


官方文檔

https://dev.mysql.com/doc/

如果英文不好的話,可以參考 searchdoc 翻譯的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


服務器參數介紹

MySQL獲取信息配置領

1) 命令行

mysqld_safe --datadir=/xxx/xxxx

2) 配置文件

持久化的配置都要寫到配置文件中.

MySQL讀取的配置文件可以通過如下命令來查看

[root@artisan mysql]# mysqld --help --verbose |grep -A 1 'Default options' Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf [root@artisan mysql]#

首先從/etc/my.cnf 讀取,逐步往后找,后面的覆蓋前面的。


MySQL配置參數的作用域

  • 全局參數

    set global 參數名=參數值; set @@global.參數名 := 參數值; --- 兩種方式都可以

    需要在MySQL客戶端中執行

  • 會話參數

    set [session] 參數名=參數值;set @@session.參數名 := 參數值; --- 兩種方式都可以

    操作下看看

    [root@artisan ~]# mysql -u root -p Enter password: .....mysql> # 這兩個參數要一起設置,否則會取大的那個為準。 mysql> show variables where variable_name = 'wait_timeout' or variable_name = 'interactive_timeout'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | interactive_timeout | 28800 | | wait_timeout | 28800 | +---------------------+-------+ 2 rows in set (0.00 sec)mysql> set global wait_timeout=3600; set interactive_timeout=3600; Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>

    設置了global 參數,有些已經登錄的會話,要退出重新登錄才生效。


內存配置相關參數

  • 確定可以使用的內存的上限 ,不要超過服務器的內存

  • 32位的操作系統,能使用的不足4G,這個也需要注意

  • 確定MySQL每個連接使用的內存
    sort_buffer_size: 舉個例子,如果配置的過大,比如100M, 這個時候如果有10個連接過來,那就要分配1G的內存。。。
    join_buffer_size
    read_buffer_size
    read_rnd_buffer_size

    這4個參數都是給每個線程分配的

  • 如何為緩存池分配內存
    Innodb_buffer_pool_size : 確保分配足夠多的內存
    key_buffer_size

需根據實際情況調整


I/O相關配置參數

這部分參數決定了MySQL如何同步緩沖池中的數據到緩存。

Innodb I/O 相關的配置

  • Innodb_log_file_size 單個事務文件的大

  • Innodb_log_files_in_group 事務日志文件的個數

  • Innodb_log_buffer_size 緩沖區的大小

    事務日志中大小 Innodb_log_file_size * Innodb_Log_files_in_group , 循環使用。 先寫到緩沖區,Innodb_log_buffer_size 指定緩沖區的大小,不用設置太大(32M-128M就夠了),默認1秒刷一次,然后再寫到日志。

  • Innodb_flush_log_at_trx_commit : 刷日志的頻率

    0: 每秒進行一次log寫入cache,并flush log到磁盤
    1[默認]:在每次事務提交執行log寫入cache,并flush log到磁盤
    2[建議]:在每次事務提交執行log寫入cache,每秒執行一次flush log到磁盤

  • Innodb_flush_method = O_DIRECT (建議值)

  • Innodb_file_per_table = 1 (啟用表空間)

  • Innodb_doublewrite = 1 (啟用雙寫緩存)


MyISAM I/O 相關的配置

MySQL的系統表,使用了MyISAM存儲引擎,所以也是需要了解的。

  • delay_key_write

    OFF: 每次寫操作刷新鍵緩沖中的臟塊到磁盤
    ON: 只對在鍵表時指定了delay_key_write選項的表時使用延遲刷新
    ALL:對所有MyISAM表都使用延遲鍵寫入


安全相關配置參數

  • expire_logs_days : 指定自動清理binlog的天數,如果開啟了binlog,最好配置這個參數,防止磁盤被占滿

  • max_allowed_packet : 控制MySQL可以接手的包的大小 , 主從節點最好一致,否則容易同步失敗

  • skip_name_resolve: 禁用DNS查找

  • sysdate_is_now :確保sysdate()返回確定性日志

  • read_only: 禁止非super權限的用戶寫權限, 從節點建議開啟。

  • skip_slave_start : 禁用slave自動恢復。 從節點建議開啟

  • sql_mode :設置MySQL所使用的SQL模式

    可選項: strict_trans_tables、 no_engine_subtitution、 no_zero_date 、no_zero_in_date、 only_full_group_by


其它常用配置參數

  • sync_binlog :控制MySQL如何向磁盤刷新binlog , 默認為0 。 建議設置為1
  • tmp_table_size 和 max_heap_table_size 控制內存臨時表的大小 ,建議這兩個值設置一樣大,超過最大內存后,將轉化為磁盤存儲
  • max_connections : 控制允許的最大連接數,默認100, 建議2000 ,根據應用調整。

小結

說了這么多參數配置, 可不要指望修改一兩個參數,性能就能有質的提升。

首先應該聚焦于 數據結構 和 SQL的優化,實在沒有優化的空間了,再考慮這些。

優化的順序

  • 數據庫結構設計和SQL語句,最容易看到成果
  • 數據庫存儲引擎的選擇和參數配置
  • 系統優化
  • 硬件升級
  • 由上到下優化


    搞定MySQL

    總結

    以上是生活随笔為你收集整理的MySQL-DB参数、内存、I/O、安全等相关参数设置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。