位置: 编程技术 - 正文

MySQL几点重要的性能指标计算和优化方法总结(mysql的用处)

编辑:rootadmin

推荐整理分享MySQL几点重要的性能指标计算和优化方法总结(mysql的用处),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql的ha,mysql重要知识点,mysql重要吗,mysql有啥用,mysql的ha,mysql重要吗,mysql的重要性,mysql的重要性,内容如对您有帮助,希望把文章链接给更多的朋友!

1 QPS计算(每秒查询数)

针对MyISAM引擎为主的DB

QPS=questions/uptime=,mysql自启动以来的平均QPS,如果要计算某一时间段内的QPS,可在高峰期间获取间隔时间t2-t1,然后分别计算出t2和t1时刻的q值,QPS=(q2-q1)/(t2-t1)

针对InnnoDB引擎为主的DB

QPS=(com_update+com_insert+com_delete+com_select)/uptime=,某一时间段内的QPS查询方法同上。

2 TPS计算(每秒事务数)

3 线程连接数和命中率

根据Threads_connected可预估thread_cache_size值应该设置多大,一般来说是一个不错的上限值,如果内存足够大,也可以设置成thread_cache_size值和threaads_connected值相同;

或者通过观察threads_created值,如果该值很大或一直在增长,可以适当增加thread_cache_size的值;在休眠状态下每个线程大概占用KB左右的内存,所以当内存足够时,设置太小也不会节约太多内存,除非该值已经超过几千。

4 表缓存

我们设置的打开表的缓存和表定义缓存

针对MyISAM:

mysql每打开一个表,都会读入一些数据到table_open_cache 缓存 中,当mysql在这个缓存中找不到相应的信息时,才会去磁盘上直接读取,所以该值要设置得足够大以避免需要重新打开和重新解析表的定义,一般设置为max_connections的倍,但最好保持在以内。

还有种依据就是根据状态open_tables的值进行设置,如果发现open_tables的值每秒变化很大,那么可能需要增大table_open_cache的值。

table_definition_cache 通常简单设置为服务器中存在的表的数量,除非有上万张表。

针对InnoDB:

与MyISAM不同,InnoDB的open table和open file并无直接联系,即打开frm表时其相应的ibd文件可能处于关闭状态;

故InnoDB只会用到table_definiton_cache,不会使用table_open_cache;

其frm文件保存于table_definition_cache中,而idb则由innodb_open_files决定(前提是开启了innodb_file_per_table),最好将innodb_open_files设置得足够大,使得服务器可以保持所有的.ibd文件同时打开。

5 最大连接数

我们设置的max_connections大小

通常max_connections的大小应该设置为比Max_used_connections状态值大,Max_used_connections状态值反映服务器连接在某个时间段是否有尖峰,如果该值大于max_connections值,代表客户端至少被拒绝了一次,可以简单地设置为符合以下条件:Max_used_connections/max_connections=0.8

6 Innodb 缓存命中率

缓冲池命中率 = (Innodb_buffer_pool_read_requests)/(Innodb_buffer_pool_read_requests + Innodb_buffer_pool_read_ahead + Innodb_buffer_pool_reads)=.%

如果该值小于.9%,建议就应该增大innodb_buffer_pool_size的值了,该值一般设置为内存总大小的%-%,或者计算出操作系统所需缓存+mysql每个连接所需的内存(例如排序缓冲和临时表)+MyISAM键缓存,剩下的内存都给innodb_buffer_pool_size,不过也不宜设置太大,会造成内存的频繁交换,预热和关闭时间长等问题。

7 MyISAM Key Buffer命中率和缓冲区使用率

缓冲区的使用率=1-(Key_blocks_unused*key_cache_block_size/ key_buffer_size)=.6%

读命中率=1-Key_reads /Key_read_requests=.%

MySQL几点重要的性能指标计算和优化方法总结(mysql的用处)

写命中率=1-Key_writes / Key_write_requests =.%

可看到缓冲区的使用率并不高,如果很长一段时间后还没有使用完所有的键缓冲,可以考虑把缓冲区调小一点。

键缓存命中率可能意义不大,因为它和应用相关,有些应用在%的命中率下就工作良好,有些则需要.%,所以从经验上看,每秒的缓存未命中次数更重要,假设一个独立磁盘每秒能做个随机读,那么每秒有5个缓冲未命中可能不会导致I/O繁忙,但每秒个就可能出现问题。

每秒缓存未命中=Key_reads/uptime=0.

8 临时表使用情况

可看到总共创建了 张临时表,其中有 张涉及到了磁盘IO,大概比例占到了0.,证明数据库应用中排序,join语句涉及的数据量太大,需要优化SQL或者增大tmp_table_size的值,我设的是M。该比值应该控制在0.2以内。

9 binlog cache使用情况

Binlog_cache_disk_use表示因为我们binlog_cache_size设计的内存不足导致缓存二进制日志用到了临时文件的次数

Binlog_cache_use 表示 用binlog_cache_size缓存的次数

当对应的Binlog_cache_disk_use 值比较大的时候 我们可以考虑适当的调高 binlog_cache_size 对应的值

Innodb log buffer size的大小设置

innodb_log_buffer_size我设置了8M,应该足够大了;Innodb_log_waits表示因log buffer不足导致等待的次数,如果该值不为0,可以适当增大innodb_log_buffer_size的值。

表扫描情况判断

Handler_read_first:使用索引扫描的次数,该值大小说不清系统性能是好是坏

Handler_read_key:通过key进行查询的次数,该值越大证明系统性能越好

Handler_read_next:使用索引进行排序的次数Handler_read_prev:此选项表明在进行索引扫描时,按照索引倒序从数据文件里取数据的次数,一般就是ORDER BY ... DESC

Handler_read_rnd:该值越大证明系统中有大量的没有使用索引进行排序的操作,或者join时没有使用到index

Handler_read_rnd_next:使用数据文件进行扫描的次数,该值越大证明有大量的全表扫描,或者合理地创建索引,没有很好地利用已经建立好的索引

Innodb_buffer_pool_wait_free

该值不为0表示buffer pool没有空闲的空间了,可能原因是innodb_buffer_pool_size设置太大,可以适当减少该值。

join操作信息

该值表示在join操作中没有使用到索引的次数,值很大说明join语句写得很有问题

该值表示第一个表使用ranges的join数量,该值很大说明join写得没有问题,通常可查看select_full_join和select_range的比值来判断系统中join语句的性能情况

如果该值不为0需要检查表的索引是否合理,表示在表n+1中重新评估表n中的每一行的索引是否开销最小所做的联接数,意味着表n+1对该联接而言并没有有用的索引。

select_scan表示扫描第一张表的连接数目,如果第一张表中每行都参与联接,这样的结果并没有问题;如果你并不想要返回所有行但又没有使用到索引来查找到所需要的行,那么计数很大就很糟糕了。

慢查询

该值表示mysql启动以来的慢查询个数,即执行时间超过long_query_time的次数,可根据Slow_queries/uptime的比值判断单位时间内的慢查询个数,进而判断系统的性能。

表锁信息

这两个值的比值:Table_locks_waited /Table_locks_immediate 趋向于0,如果值比较大则表示系统的锁阻塞情况比较严重

以上这篇MySQL几点重要的性能指标计算和优化方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持积木网。

解决mac使用homebrew安装MySQL无法登陆问题 如果你电脑是Mac的,使用homebrew安装MySQL是一个非常便捷的方式,但是还是会出现一些问题;首先保证你已经安装了mysql,如果是通过homebrew安装的,输入my

MySql登陆密码忘记及忘记密码的解决方案 方法一:MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器:safe_mysqld--skip-grant-tables&即可跳过MySQL的访问控制,任何人都可以

详解MySql的慢查询分析及开启慢查询日志 我最近也在研究MySQL性能优化的路上,那么今天也算个学习笔记吧!在小伙伴们开发的项目中,对于MySQL排查问题找出性能瓶颈来说,最容易发现并解决

标签: mysql的用处

本文链接地址:https://www.jiuchutong.com/biancheng/349963.html 转载请保留说明!

上一篇:浅谈innodb_autoinc_lock_mode的表现形式和选值参考方法(浅谈幼儿良好行为的培养论文)

下一篇:解决mac使用homebrew安装MySQL无法登陆问题(mac上的home键在哪)

  • 印花税科目会计分录
  • 六大行业房产税土地使用税减免
  • 购车增值税可以抵扣多少
  • 小微企业亏损还用缴残保金吗
  • 什么是外购类标签
  • 不是小微企业的小规模纳税人的税收优惠
  • 免抵退税额为什么等于出口价乘以退税率
  • 五联发票一般用于哪种单位
  • 公司没有业务了 可以办理停业
  • 同一控制下企业合并报表编制
  • 企业年金如何缴费标准
  • 以无形资产投资入股缴纳哪些税收
  • 会计凭证如何填写
  • 公司股权买了有什么用
  • 房产契税新政策消息2023
  • 招待费税前扣除是什么意思
  • 建筑公司运营的流程
  • 收到去年未计提折旧费
  • 企业的福利费如何使用
  • 所得税费用税率规定
  • 酒店水电费分录
  • 保险营销员的佣金收入怎么交个税
  • 销售退回涉及的科目
  • 其他业务收入借贷方向会计分录
  • 停工停产费用
  • linux sed命令详解
  • 购买方已认证的专票怎么红冲
  • win10平板模式不好用
  • 弥补亏损企业类型都是一般企业吗
  • 微信公众号开发php源码
  • thinkphp 3.2.3 getshell
  • 营业外支出与营业收入之比应小于1%的说明
  • win11 恢复
  • 收到保险公司的车赔款会计分录怎么写
  • newacs.exe是什么进程
  • php 生成缩略图
  • 房产企业预售收入怎么做账务处理
  • 个体户不建账怎样处罚
  • 计算机视觉会议2023年11月
  • 公司盈利怎么分配给股东
  • 融资租入固定资产是什么意思
  • 企业研发费用加计扣除是什么意思
  • 企业购买机器设备没有发票怎么办
  • 燃气管道安装费和暖气管道安装费两个的欠条怎么写
  • 转出未交增值税会计处理
  • 所得税多交了不退会不会来查账
  • 小规模纳税人广告税率是多少
  • 上一年的成本没入账怎么做
  • 发票作废是什么样的
  • ERROR CODE: 1175 YOU ARE USING SAFE UPDATE MODE AN
  • 新办公司实收资本怎么算
  • 银行付款明细
  • 收到汇款计入什么科目
  • 车辆按揭利息财务怎么算
  • 建筑公司挂靠单位的财务处理是?
  • 无形资产计提减值准备计算
  • 农产品成本包含所消耗的物资费用
  • 免税店为什么没有发票
  • 政府非税收入项目挂接流程图
  • 子公司内部交易
  • 营改增后计税依据
  • 发现以前的账做错了
  • mysql的union和union all
  • win10怎么关闭右下角图标
  • ios自定义应用图标
  • vcspawn.exe什么意思
  • xp系统必备软件
  • win8系统运行在哪里
  • windows任务栏变色
  • win8打开运行的快捷键是什么
  • win7开机提示音在哪里关闭
  • express model
  • 服务器限制流量
  • Android studio第一行报错
  • android camera1
  • 简单阐述javascript的主要作用
  • 云南省电子税务局怎么改号码
  • 营业执照三证合一图片
  • 广东省电子税务局app下载手机版
  • 收心归位经典语录短句
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设