Jadual Kandungan
3.3.3使用性能剖析:有限
3.4诊断简歇性问题
3.4.1单条查询问题还是服务问题
使用SHOW GLOBAL STATUS
使用SHOW PROCESSLIST 【参考】显示哪些线程正在运行
 使用查询日志
理解发现的问题
gnuplot:
3.4.2铺获诊断数据
诊断触发器
收集什么样的数据
解释结果数据
3.4.3一个诊断案例
3.5其他剖析工具
小结:
Rumah pangkalan data tutorial mysql 【MySQL数据库】第三章解读:服务器性能剖析 (下)

【MySQL数据库】第三章解读:服务器性能剖析 (下)

Aug 07, 2018 pm 01:43 PM
mysql

容我感慨一下:DBA真的不是盖的

3.3.3使用性能剖析:有限

3.4诊断简歇性问题

如系统偶尔停顿、慢查询、唤影问题,尽量不要使用试错的方式解决问题:风险大

3.4.1单条查询问题还是服务问题

使用SHOW GLOBAL STATUS

较高频率:1s/次执行该命令铺获数据,问题出现通过计数器的

使用SHOW PROCESSLIST 【参考】显示哪些线程正在运行

1.png

 使用查询日志

开启慢查询,设置全局的long_query_time=0,确认all连接采用了新设置(可能需要重置all连接使生效)

注意吞吐量突然下降时间段的日志,查询是在完成阶段才写入到慢查询日志的

 好的工具事半功倍:tcpdump、pt-query-digest、Percona Server

理解发现的问题

可视化数据:gnuplot /R(绘图工具)

gnuplot:

安装    一些命令:    常用技巧       入门教程 2         Gnuplot      数据可视化

建议:先使用前两种方法,开销低且通简单shell脚本或反复执行的查询交互式收集数据

3.4.2铺获诊断数据

现间歇性问题,尽量多收集数据(不只是问题出现时的)

弄清楚:1、有区分 何时出现了问题  的方法:触发器;2、收集诊断数据的工具

诊断触发器

误差:在没有发生问题期间收集了很多诊断数据,浪费时间(这个和前的、仔细读一下 不矛盾)

漏检:在问题出现时没有铺获到数据,错失了机会,开始收集前确认触发器能够真正地识别问题

好的触发器:

找到些能和正常时的阈值进行比较的指标

选择一个合适的阈值:足够高(正常时不会触发)、不能太高(问题发生时不错过)

推荐工具pt-stalk【参考】【2】触发器,设定到某个条件记录 配置需监控的变量 阈值 检查的频率

收集什么样的数据

执行时间:工作的时间和等待的时间

在需要的时间段内收集all能收集的数据

未知问题发生的原因:1、服务器需做大量工作、导致大量消耗CPU;2、在等待资源释放

不同的方法收集诊断数据,确认原因:

1、剖析报告:确认是否有太多工作,工具:tcpdump 监听TCP流量 模式开闭慢查询日志

2、等待分析:确认是否存在大量等待,GDB堆栈跟踪信息、show processlist  ,show innodb status观察线程、事务状态

解释结果数据

目的:1、问题是否真的发生了;2、是否有明显的跳跃性变化

工具:

    oprofile利用cpu硬件层面提供的性能计数器(performance counter),通过计数采样,帮助我们从进程、函数、代码层面找出占用cpu的"罪魁祸首"。实例【参考】

   opreport命令,分别从进程和函数层面查看cpu使用情况的方法

 samples |                            %|
-----------------------------------------------------
     镜像内发生的采样次数     采样次数所占总采样次数的百分比      镜像名称
Salin selepas log masuk

    opannotate命令可显示代码层面占用cpu的统计信息

GDB:Linux应用程序开发中,最常用的调试器是gdb(调试的对象是可执行文件),它可以在程序中设置断点、查看变量值、一步一步跟踪程序的执行过程(数据、源码)、查看内存、堆栈信息。利用调试器的这些功能可以方便地找出程序中存在的非语法错误。【参考】【参考】 语法和实例

3.4.3一个诊断案例

间歇性性能问题,具备MySQL、innodb、GNU/Linux相关知识

明确:1、问题是什么,清晰描述;2、为解决问题已做过什么操作?

开始:1、了解服务器的行为;2、梳理服务器的状态 参数配置 软硬件环境(pt-summary pt-mysql-summary)

不要被离题太多的各种情况分散了注意力,问题写在纸条上,检查一个划掉一个

是原因还是结果???

资源变得效率低下可能的原因:

1、资源过度使用,余额不足;2、资源未被正确匹配;3、资源损坏或失灵

3.5其他剖析工具

USER_STATISTICS:一些表对数据库活动进行测量、审计

strace:调查系统调用情况,使用实际时间、不可预期性、开销的,oprofile使用花费CPU周期

小结:

  • 定义性能最有效的方法是响应时间

  • 无法测量便无法有效优化,性能优化工作需要基于高质量、全方位及完整的响应时间测量

  • 测量的最佳开始点是应用程序,即使问题出在底层的数据库,借助良好的测量较容易发现问题

  • 大多数系统无法完整地测量,测量有时候也会有错误的结果,想办法绕过些限制,要能意识到方法的缺陷和不确定性在哪

  • 完整的测量会产生大量需要分析的数据,so需要用到剖析器(最佳工具)

  • 剖析报告:汇总信息,掩盖和丢弃了很多细节,不会告诉你缺了什么,不能完全依赖

  • 两种消耗时间的操作:工作或等待,almost剖析器只能测量因工作而消耗的时间,so等待分享有时候是很有用的补充,特别是cpu利用率低但工作一直无法完成的情况

  • 优化和提升两回事,当继续提升的成本超过收益时,应停止优化

  • 注意你的直接,思路,决策尽量基于数据

in a words:首先澄清问题、选择合适技术、善用工具、足够细心、逻辑清晰且坚持下去,不要把原因和结果搞混,在确定问题前不要随便针对系统做变动

相关文章:

【MySQL数据库】第二章解读:MySQL基准测试

【MySQL数据库】第三章解读:服务器性能剖析(上)

Atas ialah kandungan terperinci 【MySQL数据库】第三章解读:服务器性能剖析 (下). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

MySQL: Kemudahan Pengurusan Data untuk Pemula MySQL: Kemudahan Pengurusan Data untuk Pemula Apr 09, 2025 am 12:07 AM

MySQL sesuai untuk pemula kerana mudah dipasang, kuat dan mudah untuk menguruskan data. 1. Pemasangan dan konfigurasi mudah, sesuai untuk pelbagai sistem operasi. 2. Menyokong operasi asas seperti membuat pangkalan data dan jadual, memasukkan, menanyakan, mengemas kini dan memadam data. 3. Menyediakan fungsi lanjutan seperti menyertai operasi dan subqueries. 4. Prestasi boleh ditingkatkan melalui pengindeksan, pengoptimuman pertanyaan dan pembahagian jadual. 5. Sokongan sokongan, pemulihan dan langkah keselamatan untuk memastikan keselamatan data dan konsistensi.

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara membuka phpmyadmin Cara membuka phpmyadmin Apr 10, 2025 pm 10:51 PM

Anda boleh membuka phpmyadmin melalui langkah -langkah berikut: 1. Log masuk ke panel kawalan laman web; 2. Cari dan klik ikon phpmyadmin; 3. Masukkan kelayakan MySQL; 4. Klik "Login".

Cara Membuat Premium Navicat Cara Membuat Premium Navicat Apr 09, 2025 am 07:09 AM

Buat pangkalan data menggunakan Navicat Premium: Sambungkan ke pelayan pangkalan data dan masukkan parameter sambungan. Klik kanan pada pelayan dan pilih Buat Pangkalan Data. Masukkan nama pangkalan data baru dan set aksara yang ditentukan dan pengumpulan. Sambung ke pangkalan data baru dan buat jadual dalam penyemak imbas objek. Klik kanan di atas meja dan pilih masukkan data untuk memasukkan data.

MySQL dan SQL: Kemahiran Penting untuk Pemaju MySQL dan SQL: Kemahiran Penting untuk Pemaju Apr 10, 2025 am 09:30 AM

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Cara Membuat Sambungan Baru ke MySQL di Navicat Cara Membuat Sambungan Baru ke MySQL di Navicat Apr 09, 2025 am 07:21 AM

Anda boleh membuat sambungan MySQL baru di Navicat dengan mengikuti langkah -langkah: Buka aplikasi dan pilih Sambungan Baru (Ctrl N). Pilih "MySQL" sebagai jenis sambungan. Masukkan nama host/alamat IP, port, nama pengguna, dan kata laluan. (Pilihan) Konfigurasikan pilihan lanjutan. Simpan sambungan dan masukkan nama sambungan.

Cara Memulihkan Data Selepas SQL Memadam Barisan Cara Memulihkan Data Selepas SQL Memadam Barisan Apr 09, 2025 pm 12:21 PM

Memulihkan baris yang dipadam secara langsung dari pangkalan data biasanya mustahil melainkan ada mekanisme sandaran atau transaksi. Titik Utama: Rollback Transaksi: Jalankan balik balik sebelum urus niaga komited untuk memulihkan data. Sandaran: Sandaran biasa pangkalan data boleh digunakan untuk memulihkan data dengan cepat. Snapshot Pangkalan Data: Anda boleh membuat salinan bacaan pangkalan data dan memulihkan data selepas data dipadam secara tidak sengaja. Gunakan Pernyataan Padam dengan berhati -hati: Periksa syarat -syarat dengan teliti untuk mengelakkan data yang tidak sengaja memadamkan. Gunakan klausa WHERE: Secara jelas menentukan data yang akan dipadam. Gunakan Persekitaran Ujian: Ujian Sebelum Melaksanakan Operasi Padam.

Cara menggunakan redis berulir tunggal Cara menggunakan redis berulir tunggal Apr 10, 2025 pm 07:12 PM

Redis menggunakan satu seni bina berulir untuk memberikan prestasi tinggi, kesederhanaan, dan konsistensi. Ia menggunakan I/O multiplexing, gelung acara, I/O yang tidak menyekat, dan memori bersama untuk meningkatkan keserasian, tetapi dengan batasan batasan konkurensi, satu titik kegagalan, dan tidak sesuai untuk beban kerja yang berintensifkan.

See all articles