一、对比行存储和列存储的区别前,我们先来聊下背景。假设我们用mysql做了一个商品订单库order, 如下
orderid | name | kind | price | kg | time |
1 | 猪肉 | 肉类 | 50 | 2.0 | 2020.01.01 |
2 | 牛肉 | 肉类 | 60 | 1.0 | 2020.01.01 |
3 | 白菜 | 蔬菜 | 6 | 1.0 | 2020.01.01 |
二、什么叫行存储?
举个例子,按mysql的存储设计,数据是按行排列到磁盘中的,比如第1行的全部字段用/分开,连续写入到磁盘中,"1/猪肉/肉类/50/2.0/2020.01.01"在order.idb文件中的offset范围为1201~1250。当用户需要查找第1笔订单的价格,语句为"select price from table where orderid=1",mysql必须把offset1201~1250都从磁盘中读取出来,再从中挑选出price=50这个字段值返回。在数据量不多时,看起来并没有什么问题。
假设我们换个场景思考,我们是做电商的