数据库
数据库 标签描述

一数据量大了后为什么count()会变慢? 在系统开发时,我们经常会有统计表数据量的需求,例如无条件分页查询时就需要count下得到数据总量去计算总页数。但是当数据量越来越大后count()也会变得越来越慢。 count()的实现方式(无查询条件): mysqlMyISAM会记录每个表的总行数,在查询的时候直接读取返回就好了; mysqlInnoDB在每次执行count()时,会去做全表扫描将数据读出来,然后做统计计算得到结果; 为什么InnoDB不像MyISAM一样维护一个总行数呢?因...

  qbian   9天前   35   2   2 数据库b+树sqlmysql

一背景 软件开发的很多场景下都有唯一性要求,例如:判断手机号是否已经注册过(需要对手机号做唯一性校验)、判断某个用户是否已经关注过某个话题(需要对用户ID+话题ID做唯一性校验)。 二设计 针对上述的业务唯一校验,可以有多种不同的设计实现,例如: 在数据库层设计唯一索引限制(针对定制系统的实现方案); 在应用层通过分布式锁做校验(针对通用系统的实现方案,通常用于业务中台); 为什么需要分布式锁:如果只是在应用层做了查询数据库是否存在,不存在就保存。当出现并发时,两个线程同时查询都没查询到,然后两个线程都去做保存操作,数据库层又没有唯一索引约束,就会出现两个都保存成功,也就打破了业务唯...

  qbian   15天前   38   2   0 数据库并发锁