
分库分表难题:单表极限何在?
针对单表数据量庞大、查询效率低的问题,分库分表方案应运而生。但对于访问量不大、单表较大的场景,到底该如何选择分库还是分表呢?
根据此前的了解,分库侧重提升数据库并发连接能力,而分表则是降低B+Tree索引树的高度,加快查询速度。那么,是否意味着访问量不大、单表巨大的情况下,仅分表即可满足需要?
分库必分表的答案
答案是:否。
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
原因在于数据库的瓶颈并非CPU、RAM,而是硬盘速度,特别是硬盘的随机读写速度。
分库分表的本质在于将数据存储到不同的物理机器中,从而提高QPS或TPS。因此,仅仅分表而不分库无法从根本上解决硬盘随机读写速度的问题。
分表可以降低索引树的高度,减少数据查询所需的时间,但是在访问量较大的情况下,硬盘读写依然会成为瓶颈。而分库通过将数据分布到不同的机器上,可以有效降低对单块硬盘的读写压力,从而提升整体性能。
所以,对于访问量不是很大、但单表很大的情况,依然推荐分库分表,将数据均衡分布到多个机器上,以获得更佳的性能表现。









