count(*)的实现方式

博客介绍了MVCC,其主要用于事务间的并发,可重复读通过它实现。还提及数据库行数计数方法,如show table status的TABLE_ROWS是采样估算值,也可自行计数,用redis计数可能有查询丢失问题,用mysql计数因可重复读机制能保证一致性,最后介绍了count聚合函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引擎对比事务并发能力数据安全count(*)  
InnoDb   
MyISAM   表的总行数存在磁盘里

 

 

引擎对比count(*)
InnoDb读取每一行记录做累加
MyISAM表的总行数存在磁盘里(加where条件一样很慢)

 

MVCC:主要是事务之前的并发(可重复读通过MVCC实现)

show table status,TABLE_ROWS表示多少行(通过采样估算来的)

 

自己计数的方法(找个地方,把行数存起来)

用redis计数,不同的线程之前可能会有数据的查询丢失

用mysql计数,由于可重复读机制,别的地方读到的都是统一值

 

count 聚合函数

count()的用法  主键ID(从引擎取出ID,不为null累加)、1()、字段(取出对应字段)、*(取出数据)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值