mysql 8核16g参数优化_16G 8核 win2008 环境下,mysql 配置方案优化方案

本文探讨了在MySQL 8核16GB环境下,针对InnoDB引擎的count(*)查询优化方法,包括模拟MyISAM计数器、使用sql_calc_found_rows、从数据字典获取近似值、基于表结构特性取值以及MySQL 8.0.17推荐的标准方法。MySQL 8.0对count(*)进行了优化,建议避免使用sql_calc_found_rows。同时,文章提到了PHP数据库操作类的使用,提供了一种简化数据库交互的方式。
摘要由CSDN通过智能技术生成

mysql innodb select count 优化解决方案

3a0013a20a071aa90a1f62e3bbf811b5.png

我们知道,MySQL 一直依赖对 count(*) 的执行很头疼。的时候,MyISAM 引擎自带计数器,可以秒回;不过 InnoDB 就需要实时计算,所以很头疼。以前有多方法可以变相解决此类问题,比如:

1. 模拟 MyISAM 的计数器比如表 ytt1,要获得总数,我们建立两个触发器分别对 insert/delete 来做记录到表 ytt1_count,这样只需要查询表 ytt1_count 就能拿到总数。ytt1_count 这张表足够小,可以长期固化到内存里。不过缺点就是有多余的触发器针对 ytt1 的每行操作,写性能降低。这里需要权衡。

2. 用 MySQL 自带的 sql_calc_found_rows 特性来隐式计算

依然是表 ytt1,不过每次查询的时候用 sql_calc_found_rows 和 found_rows() 来获取总数,比如:

1 row in set, 1 warning (0.00 sec)

这样的好处是写法简单,用的是 MySQL 自己的语法。缺点也有,大概有两点:1. sql_calc_found_rows 是全表扫。2. found_rows() 函数是语句级别的存储,有很大的不确定性,所以在 MySQL 主从架构里,语句级别的行级格式下,从机数据可能会不准确。不过行记录格

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值