MySQL实例用的是阿里云的高可用版本,5.7。存储类型是SSD。 CPU是8核心,最大连接数是10000. 数据库实例的内存是 65GB ,目前存储空间接近500G。 阿里云的高可用版本其实是一主一备的双节点版本。适用于大中型企业。
select count(id) from order;
count(id) 查询很慢,返回行数:134170775 , 😶。耗时30s。
订单号是varchar(20)类型有BTree索引
select ordernum, status from order where ordernum = '68720000000985'
因为ordernum是varchar类型,所以查询的时候也需要用''包围值,否则会当成int查,不走索引,会巨慢。
explain 分析
explain select ordernum, status from order where ordernum = '68720000000985'
key 就是 idx_ordernum , rows = 1 , 所以非常快。 查询耗时在1ms内。主要是数据返回的网络耗时上面。
mysql 并不是不可以存储上亿条数据。 前提是要有索引,没有索引的,1千万都顶不住。 数据都上亿了,count(id)查询也不可取。 太慢了。
如果商户端要查询的话,可以把订单数据通过logstash同步到ES,通过ES查询。ES可以支持更大的量。同步稍稍慢点没多大关系。