chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MySQL配置調(diào)優(yōu)技巧

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2025-07-31 10:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

MySQL運維實戰(zhàn):從配置調(diào)優(yōu)到SQL性能優(yōu)化的完整攻略

作者簡介:資深運維工程師,專注數(shù)據(jù)庫性能優(yōu)化8年,曾優(yōu)化過千萬級用戶系統(tǒng)的MySQL集群。今天分享一些壓箱底的MySQL調(diào)優(yōu)技巧,幫你輕松應(yīng)對生產(chǎn)環(huán)境的各種挑戰(zhàn)。

開篇:一個真實的生產(chǎn)事故

上個月,我們公司的核心業(yè)務(wù)系統(tǒng)突然出現(xiàn)大面積超時,用戶投訴電話不斷。經(jīng)過緊急排查,發(fā)現(xiàn)是MySQL服務(wù)器CPU飆升到99%,大量慢查詢堆積。通過一系列配置調(diào)優(yōu)和SQL優(yōu)化,最終在30分鐘內(nèi)恢復(fù)了服務(wù)。

這次事故讓我深刻認識到:MySQL調(diào)優(yōu)不是紙上談兵,而是運維工程師的核心競爭力。

Part 1: MySQL配置調(diào)優(yōu) - 讓你的數(shù)據(jù)庫飛起來

1.1 內(nèi)存配置:合理分配是關(guān)鍵

# my.cnf 核心內(nèi)存配置
[mysqld]
# 緩沖池大?。和ǔTO(shè)為物理內(nèi)存的70-80%
innodb_buffer_pool_size=8G

# 緩沖池實例數(shù):提高并發(fā)性能
innodb_buffer_pool_instances=8

# 日志緩沖區(qū):減少磁盤I/O
innodb_log_buffer_size=64M

# 查詢緩存:對讀密集型應(yīng)用很重要(MySQL 8.0已移除)
query_cache_size=256M
query_cache_type=1

實戰(zhàn)技巧:如何確定最佳的innodb_buffer_pool_size?

-- 查看緩沖池使用情況
SELECT
 ROUND(A.num*100.0/B.num,2)ASbuffer_pool_hit_rate
FROM
 (SELECTvariable_valueASnumFROMperformance_schema.global_statusWHEREvariable_name='Innodb_buffer_pool_read_requests') A,
 (SELECTvariable_valueASnumFROMperformance_schema.global_statusWHEREvariable_name='Innodb_buffer_pool_reads') B;

緩沖池命中率應(yīng)該保持在99%以上。

1.2 連接與線程優(yōu)化

# 連接相關(guān)配置
max_connections=2000
max_connect_errors=10000
connect_timeout=60
wait_timeout=28800
interactive_timeout=28800

# 線程緩存
thread_cache_size=64
thread_concurrency=16

運維經(jīng)驗分享

?max_connections不是越大越好,要根據(jù)服務(wù)器配置合理設(shè)置

? 監(jiān)控Threads_connected和Threads_running,避免連接數(shù)暴漲

1.3 InnoDB核心參數(shù)調(diào)優(yōu)

# InnoDB核心配置
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=2
innodb_log_file_size=1G
innodb_log_files_in_group=2
innodb_max_dirty_pages_pct=75
innodb_io_capacity=2000
innodb_read_io_threads=8
innodb_write_io_threads=8

性能提升案例
將innodb_flush_log_at_trx_commit從1改為2,TPS提升了40%(需要權(quán)衡數(shù)據(jù)安全性)。

Part 2: SQL性能優(yōu)化 - 讓慢查詢無處遁形

2.1 索引優(yōu)化:運維工程師的必殺技

建立復(fù)合索引的黃金法則

-- 錯誤示例:每個字段單獨建索引
CREATEINDEX idx_user_idONorders(user_id);
CREATEINDEX idx_statusONorders(status);
CREATEINDEX idx_create_timeONorders(create_time);

-- 正確示例:根據(jù)查詢模式建立復(fù)合索引
CREATEINDEX idx_user_status_timeONorders(user_id, status, create_time);

索引使用情況分析

-- 查找未使用的索引
SELECT
 object_schema,
 object_name,
 index_name,
 count_star,
 count_read,
 count_insert,
 count_update,
 count_delete
FROMperformance_schema.table_io_waits_summary_by_index_usage
WHEREindex_nameISNOT NULL
ANDcount_star=0
ANDobject_schema='your_database'
ORDERBYobject_schema, object_name;

2.2 查詢優(yōu)化實戰(zhàn)案例

案例1:千萬級數(shù)據(jù)表的分頁優(yōu)化

-- 傳統(tǒng)分頁(性能差)
SELECT*FROMuser_logs
WHEREuser_id=12345
ORDERBYcreated_atDESC
LIMIT1000000,20;

-- 優(yōu)化后的分頁(性能提升100倍)
SELECT*FROMuser_logs
WHEREuser_id=12345
ANDid

案例2:子查詢轉(zhuǎn)JOIN優(yōu)化

-- 慢查詢:使用子查詢
SELECT*FROMorders o
WHEREo.user_idIN(
SELECTu.idFROMusers uWHEREu.level='VIP'
);

-- 優(yōu)化:轉(zhuǎn)換為JOIN
SELECTo.*FROMorders o
INNERJOINusers uONo.user_id=u.id
WHEREu.level='VIP';

2.3 慢查詢?nèi)罩痉治?/p>

開啟慢查詢?nèi)罩?/strong>:

slow_query_log=ON
slow_query_log_file= /var/log/mysql/slow.log
long_query_time=1
log_queries_not_using_indexes=ON

使用pt-query-digest分析慢查詢

# 安裝percona-toolkit
sudoapt-get install percona-toolkit

# 分析慢查詢?nèi)罩?pt-query-digest /var/log/mysql/slow.log > slow_query_report.txt

Part 3: 高級調(diào)優(yōu)技巧

3.1 讀寫分離配置

# Python示例:使用PyMySQL實現(xiàn)讀寫分離
importpymysql
importrandom

classMySQLPool:
 def__init__(self):
   # 主庫配置(寫操作)
   self.master = {
     'host':'192.168.1.10',
     'user':'root',
     'password':'password',
     'database':'mydb'
    }
   
   # 從庫配置(讀操作)
   self.slaves = [
      {'host':'192.168.1.11','user':'root','password':'password','database':'mydb'},
      {'host':'192.168.1.12','user':'root','password':'password','database':'mydb'}
    ]
 
 defget_read_connection(self):
    slave_config = random.choice(self.slaves)
   returnpymysql.connect(**slave_config)
 
 defget_write_connection(self):
   returnpymysql.connect(**self.master)

3.2 MySQL監(jiān)控腳本

#!/bin/bash
# MySQL性能監(jiān)控腳本

# 獲取MySQL狀態(tài)
mysql_status() {
  mysql -e"SHOW GLOBAL STATUS;"| grep -E"(Connections|Questions|Threads_running|Slow_queries)"
}

# 檢查InnoDB狀態(tài)
innodb_status() {
  mysql -e"SHOW ENGINE INNODB STATUSG"| grep -A 10"BUFFER POOL AND MEMORY"
}

# 獲取當前運行的查詢
current_queries() {
  mysql -e"SELECT * FROM information_schema.processlist WHERE COMMAND != 'Sleep' ORDER BY TIME DESC;"
}

echo"=== MySQL Performance Monitor ===="
echo"1. Connection Status:"
mysql_status
echo""
echo"2. InnoDB Buffer Pool:"
innodb_status
echo""
echo"3. Current Running Queries:"
current_queries

3.3 分庫分表策略

水平分表示例

-- 按時間分表
CREATE TABLEuser_logs_202501LIKEuser_logs;
CREATE TABLEuser_logs_202502LIKEuser_logs;

-- 按hash分表
CREATE TABLEuser_data_0LIKEuser_data;
CREATE TABLEuser_data_1LIKEuser_data;

-- 分表路由邏輯(Python)
def get_table_name(user_id, table_count=10):
 returnf"user_data_{user_id % table_count}"

Part 4: 生產(chǎn)環(huán)境實戰(zhàn)經(jīng)驗

4.1 MySQL故障排查流程

# 1. 檢查MySQL服務(wù)狀態(tài)
systemctl status mysql

# 2. 查看錯誤日志
tail-f /var/log/mysql/error.log

# 3. 檢查磁盤空間
df-h

# 4. 查看當前連接數(shù)
mysql -e"SHOW PROCESSLIST;"

# 5. 分析慢查詢
mysql -e"SELECT * FROM information_schema.processlist WHERE TIME > 10;"

4.2 備份恢復(fù)最佳實踐

# 熱備份腳本
#!/bin/bash
DATE=$(date+%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql"
DB_NAME="production_db"

# 使用mysqldump進行邏輯備份
mysqldump --single-transaction --routines --triggers 
 --master-data=2 --databases$DB_NAME
 | gzip >$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz

# 使用xtrabackup進行物理備份(推薦)
xtrabackup --backup --target-dir=$BACKUP_DIR/full_${DATE}

4.3 高可用架構(gòu)部署

MySQL主從復(fù)制配置

主庫配置:

[mysqld]
server-id=1
log-bin= mysql-bin
binlog-format= ROW
gtid-mode=ON
enforce-gtid-consistency=ON

從庫配置:

[mysqld]
server-id=2
relay-log= relay-bin
read-only=1

Part 5: 性能調(diào)優(yōu)工具箱

5.1 必備監(jiān)控工具

1. Prometheus + Grafana監(jiān)控

# prometheus.yml配置
global:
scrape_interval:15s

scrape_configs:
-job_name:'mysql'
 static_configs:
  -targets:['localhost:9104']

2. pt-stalk故障診斷

# 當MySQL出現(xiàn)性能問題時自動收集診斷信息
pt-stalk --function=processlist --variable=Threads_running 
 --threshold=25 --match-command=Query --collect-oprofile 
 --collect-strace --collect-tcpdump

5.2 壓測工具使用

sysbench壓測示例

# 準備測試數(shù)據(jù)
sysbench oltp_read_write --table-size=1000000 
 --mysql-host=localhost --mysql-user=root 
 --mysql-password=password --mysql-db=testdb prepare

# 執(zhí)行壓測
sysbench oltp_read_write --table-size=1000000 
 --mysql-host=localhost --mysql-user=root 
 --mysql-password=password --mysql-db=testdb 
 --threads=16 --time=300 run

總結(jié):MySQL調(diào)優(yōu)的核心思路

1.監(jiān)控先行:建立完善的監(jiān)控體系,及時發(fā)現(xiàn)問題

2.配置為基:合理的參數(shù)配置是性能的基礎(chǔ)

3.索引為王:良好的索引設(shè)計解決80%的性能問題

4.架構(gòu)為本:讀寫分離、分庫分表解決高并發(fā)問題

5.持續(xù)優(yōu)化:性能調(diào)優(yōu)是一個持續(xù)的過程

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 集群
    +關(guān)注

    關(guān)注

    0

    文章

    128

    瀏覽量

    17553
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3977

    瀏覽量

    67394
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    889

    瀏覽量

    28855

原文標題:MySQL運維實戰(zhàn):從配置調(diào)優(yōu)到SQL性能優(yōu)化的完整攻略

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOSAI編程智慧調(diào)優(yōu)

    DevEco Studio提供智慧調(diào)優(yōu)能力,支持通過自然語言交互,分析并解釋當前實例或項目中存在的性能問題,幫助開發(fā)者快速定位影響性能的具體原因。該功能從DevEco Studio 6.0.0
    發(fā)表于 09-01 15:15

    0基礎(chǔ)學(xué)Mysql:mysql入門視頻教程!

    的性能調(diào)優(yōu)技術(shù)掌握基于MySQL的架構(gòu)設(shè)計方案課程目錄:第1節(jié) MySQL課程介紹和MySQL的基礎(chǔ)概念(1)第2節(jié)
    發(fā)表于 07-08 10:51

    infosphere CDC性能調(diào)優(yōu)的文檔

    infosphere CDC性能調(diào)優(yōu)的文檔
    發(fā)表于 09-07 09:30 ?7次下載
    infosphere CDC性能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>的文檔

    機器學(xué)習(xí)如何調(diào)優(yōu)數(shù)據(jù)庫

    在延遲方面,相比 Postgres 默認配置,OtterTune、調(diào)優(yōu)工具、DBA 和 RDS 的配置獲得了近似的提升。我們大概可以把這歸于 OLTP-Bench 客戶端和 DBMS
    發(fā)表于 11-07 13:50 ?1283次閱讀
    機器學(xué)習(xí)如何<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>數(shù)據(jù)庫

    如何對電機進行調(diào)優(yōu)?調(diào)優(yōu)的好處是什么?

    如何自動對電機進行調(diào)優(yōu)
    的頭像 發(fā)表于 08-22 00:03 ?3669次閱讀

    ElasticSearch調(diào)優(yōu)需要注意什么

    用戶修改即可使用,當你更清楚的知道你想如何使用es后,你可以作很多的優(yōu)化以提高你的用例的性能,下面的內(nèi)容告訴你 你應(yīng)該/不應(yīng)該 修改哪些配置。 第一部分:調(diào)優(yōu)索引速度https
    的頭像 發(fā)表于 09-02 17:24 ?1818次閱讀

    Linux用電功耗調(diào)優(yōu)的筆記分享

    整理一些Linux用電功耗調(diào)優(yōu)的筆記,分享給小伙伴,關(guān)于用電調(diào)優(yōu)個人覺得
    的頭像 發(fā)表于 06-23 15:19 ?5152次閱讀

    關(guān)于JVM的調(diào)優(yōu)知識

    最近很多小伙伴跟我說,自己學(xué)了不少JVM的調(diào)優(yōu)知識,但是在實際工作中卻不知道何時對JVM進行調(diào)優(yōu)。今天,我就為大家介紹幾種JVM調(diào)
    的頭像 發(fā)表于 09-14 14:54 ?1172次閱讀

    KeenOpt調(diào)優(yōu)算法框架實現(xiàn)對調(diào)優(yōu)對象和配套工具的快速適配

    今天, KeenTune 再次帶來開源重磅特性——新增通用的調(diào)優(yōu)算法框架:keenopt。有了 keenopt 的加持,KeenTune 不再僅僅是支持靈活擴展調(diào)優(yōu)場景的
    的頭像 發(fā)表于 11-11 09:31 ?1306次閱讀

    jvm調(diào)優(yōu)主要是調(diào)哪里

    JVM調(diào)優(yōu)主要涉及內(nèi)存管理、垃圾回收、線程管理與鎖優(yōu)化等方面。下面將詳細介紹每個方面的調(diào)優(yōu)技術(shù)和策略以及如何進行優(yōu)化。 內(nèi)存管理 JVM的內(nèi)存管理主要包括堆內(nèi)存、棧內(nèi)存和非堆內(nèi)存。堆內(nèi)
    的頭像 發(fā)表于 12-05 11:37 ?1987次閱讀

    jvm調(diào)優(yōu)工具有哪些

    JVM調(diào)優(yōu)是提高Java應(yīng)用程序性能的重要手段,而JVM調(diào)優(yōu)工具則是輔助開發(fā)人員進行調(diào)優(yōu)工作的利
    的頭像 發(fā)表于 12-05 11:44 ?1732次閱讀

    鴻蒙開發(fā)實戰(zhàn):【性能調(diào)優(yōu)組件】

    性能調(diào)優(yōu)組件包含系統(tǒng)和應(yīng)用調(diào)優(yōu)框架,旨在為開發(fā)者提供一套性能調(diào)優(yōu)平臺,可以用來分析內(nèi)存、性能等問
    的頭像 發(fā)表于 03-13 15:12 ?1058次閱讀
    鴻蒙開發(fā)實戰(zhàn):【性能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>組件】

    深度解析JVM調(diào)優(yōu)實踐應(yīng)用

    Tomcat自身的調(diào)優(yōu)是針對conf/server.xml中的幾個參數(shù)的調(diào)優(yōu)設(shè)置。首先是對這幾個參數(shù)的含義要有深刻而清楚的理解。
    的頭像 發(fā)表于 04-01 10:24 ?942次閱讀
    深度解析JVM<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>實踐應(yīng)用

    MMC SW調(diào)優(yōu)算法

    電子發(fā)燒友網(wǎng)站提供《MMC SW調(diào)優(yōu)算法.pdf》資料免費下載
    發(fā)表于 09-20 11:14 ?0次下載
    MMC SW<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>算法

    MMC DLL調(diào)優(yōu)

    電子發(fā)燒友網(wǎng)站提供《MMC DLL調(diào)優(yōu).pdf》資料免費下載
    發(fā)表于 10-11 11:48 ?0次下載
    MMC DLL<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>