分库分表的意义
数据库优化方式
重启mysql、sql优化,表结构与存储引擎(对不同的的表,根据业务需求设置不同的存储引擎),数据库与应用架构(读写分离、主从配置),数据库与操作系统的配置;
数据量,数据增长,数据访问频率,决定了数据库优化方式?那什么程度的数据量、多大的数据增长量,什么频率的数据访问是作为衡量标准了;
根据阿里巴巴
分库分表的方式有四种,它们分别是:垂直分表、垂直分库、水平分库和水平分表。
垂直分表
避免不同业务访问同一张表。
比如:假设有个小型电商业务,把一个订单相关的商品信息、买卖家信息、支付信息都放在一张大表里。可以考虑通过垂直切分的方式,把商品信息、买家信息、卖家信息、支付信息都单独拆分成独立的表,并通过订单号跟订单基本信息关联起来;
垂直分库
在垂直分表的基础上,不同的业务还是会访问同一个数据库,qps访问频率可能还是会高。垂直分库能避免不同业务访问同一个数据库。
水平分表
水平分表就是指以行为单位对数据进行拆分,一般意义上的分库分表指的就是水平分表。
一般可以有范围法和hash法来进行水平分表。
假设现在有30万行数据,需要对它们进行水平分表:
范围法很好理解,可以让第1-100000行数据存放在表1,第100001-200000行数据存放在表2,第200001-300000行数据存放在表3,就完成了水平分表。
hash法也不难理解,就是选择一个合适的hash函数,比如说使用取模操作(%),把%3结果为0的数据存放在表1,结果为1的存放在表2,结果为2的存放在表3即可。
水平分库
降低数据库访问频率