zoukankan      html  css  js  c++  java
  • MySQL如何计算重要的指标,来确定配置是否正确

    在调优MySQL数据库和监控数据库时,很多朋友不知道如何下手,怎么来确定是不是参数设置的合理,下面给出一些如何计算指标,来确定数据库参数是否设置合理,希望给大家一些方法,去做MySQL数据库优化,最好对照一下方法,看看自己的生产库配置是否有问题。
     
    在show global status;查看各个值。
     
    平均查看是否频繁打开表
    Opened_tables/Uptime  = xx/s
    299304/21062119= 0.0142/s   --每秒不到1次的打开表,说明都是在内存里缓存了,比较理想
     
    平均查看是否频繁打开文件
    Opened_files/Uptime = xx/s
    732146117/21062119= 34.7613/s     --比较频繁 ,可能是如下参数比较小,缓存少导致
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | innodb_open_files | 3000  |
    | open_files_limit  | 65535 |
    +-------------------+-------+
     
    平均查看是否频繁打开表结构
    Opened_table_definitions/Uptime = xx/s
    32631/21062119= 0.0015/s    --每秒不到1次的打开表结构,说明都是在内存里缓存了,比较理想
     
    innodb buffer的预读取是否有用
    Innodb_buffer_pool_read_ahead_evicted:预读取被清理的页数量
    Innodb_buffer_pool_read_ahead:预读取的页数量
    ( 1 - Innodb_buffer_pool_read_ahead_evicted / Innodb_buffer_pool_read_ahead ) *100  =  xx%
    ( 1 - 149/4896862)*100 =  99.9970%   --此百分比很高,说明预读取的页被清理出内存的很少,预读取设置比较理想
     
    innodb_read_ahead_threshold:此参数是设置预读取的页数,设置0是关闭预读取功能
     
    查看log file大小是否合适
    Innodb_log_waits :log file发生等待的次数,说明log buffer太小或者是刷新频繁导致
    Innodb_os_log_written :redo日志写的字节数
    ( innodb_log_file_size * innodb_log_files_in_group / innodb_buffer_pool_size ) *100 =  xx%
    (1572864000*2/25769803776)*100 = 12.2070%   --使用率,推荐在 1.2% -- 50%之间
     
    innodb_rollback_on_timeout :超时回滚,尽量关闭
     
    平均每秒请求读指定行数据的次数
    Handler_read_rnd
    Handler_read_rnd/Uptime  = xx/s
    120716896940/21062119 = 5731.4697/s   --可能需要大量的排序,可能需要大量的扫描表或者没有使用正确索引导致的
     
    平均每秒join没有使用索引的次数
    Select_full_join /Uptime = xx/s
    723959/21062119 = 0.0344/s  --此值不为0 ,需要注意检查是否没有索引
     
    join没有使用索引的百分比
    ( Select_full_join / Com_select ) * 100 = xx%
    (723959/27756137450)*100 = 0.0026%
     
    平均每秒join时第一个表全表扫描次数
    Select_scan /Update = xx/s
    18777133984/ 21062119 = 891.5121/s   --全表扫描次数太多
     
    平均每秒的连接次数
    Connections /uptime = xx/s
    11646933/21062119 =  0.5530/s
     
    线程创建连接的百分比
    Threads_created:线程创建连接的次数
    ( Threads_created / Connections ) *100 = xx%
    (69532/11646933)*100 = 0.5970/s
     
    ( Max_used_connections / max_connections ) *100 = xx%
    (875/5512)*100 =  15.8745%   --表示最多使用了设置的最大连接数的15.8% ,最大连接数设置的比实际大很多,够用
  • 相关阅读:
    Discuz! 的编码规范
    Golang 并发编程指南
    Hyrum's Law
    从数组中将变量导入到当前的符号表
    map[interface {}]interface {} yaml文件解码
    迪基福勒检验
    约定式路由
    use of internal package github.com/gokratos/kratos/v2/internal/httputil not allowed
    See https://v8.dev/blog/mathrandom for details.
    Cast a value as a certain type
  • 原文地址:https://www.cnblogs.com/katec/p/9254188.html
Copyright © 2011-2022 走看看