分享一个朋友的人工智能教程(请以“右键”->"在新标签页中打开连接”的方式访问)。比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看。
一:为什么要分表?
- 如果一个表的每条记录的内容很大,那么就需要更多的IO操作,如果字段值比较大,而使用频率相对比较低,可以将大字段移到另一张表中,当查询不查大字段的时候,这样就减少了I/O操作
- 如果一个表的数据量很少,那么查询就很快;如果表的数据量非常非常大,那么查询就变的比较慢;也就是表的数据量影响这查询的性能。
- 表中的数据本来就有独立性,例如分别记录各个地区的数据或者不同时期的数据,特别是有些数据常用,而另外一些数据不常用。
大表对DDL操作有一定的影响,如创建索引,添加字段
修改表结构需要长时间锁表,会造成长时间的主从延迟,影响正常的数据操作
当产品运营很多年时数据量就会变的很大,如QQ的用户表,不知道QQ有多少用户,而且一个人可能有多个QQ号,如订单表,比如淘宝的订单数据有多少,都是惊人的数据量。单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。
二:分割方式
分表有两种分割方式,一种垂直分割另一种水平分割。

本文探讨了MySQL性能优化中的分表策略,包括为何分表、垂直分割和水平分割的细节以及优缺点。垂直分割是通过拆分大字段和低频访问字段来减少I/O操作,而水平分割则在数据量过大时将数据分散到多张表,以应对大数据量带来的查询性能下降。文中还提到了分表的标准和数据库分片方案,以及在大表统计中采用中间表的方法。
订阅专栏 解锁全文
173万+





