sidstory
数据库百万级数据高效获取总数
作者:smice分类:Java
日期:2022-01-18 11:25:002022-01-18阅读:325
基本上一搜索mysql或者数据库获取总数,得到的结果都是讨论select()、select(1)、select(column)的效率。
当然效率上select()=select(1)>select(column),当数据量不是特别大,几万级别的可以直接使用select()。
但是当百万级别时想实时获取时还使用select()时cpu占用率飙升(如下图),这时就不能直接从数据库查询,而是采用缓存。
情景一、需要数据比较精确
可以采用redis(mysql中新建个表储存也可以),第一次启动时将总数获取,存入redis,增删的时候也同时增删redis中缓存的总数。
情景二、需要的数据不太精确,不想另设缓存
可直接使用select TABLE_ROWS from information_schema.`TABLES` WHERE TABLE_NAME = 'table_name';
这是mysql内部的一个缓存,不会实时更新,在数据不需要特别精确的时候可以直接使用,table_name换成要统计的表名。
弹幕评论