第15章 数据分区
随着数据库的增长,通常总有那么一两个表会变得一发不可收拾。而如果表本身的容量远远超过了物理内存的大小,甚至索性连索引也不能改善性能的情况下,查询的执行时间将会大大延长。在这种情况下,对付这种类型的大表的一种方法就是将其进行分区管理,即将该表拆分为一系列较小的、与之相关联的表来进行替代。此时的应用程序不需修改,只需要不断地去查询同一个表。不过这个时候查询只需要去使用某个子集的数据返回查询结果,优化在这种情况下就会产生了,它将会取代整个表的扫描。
15.1 表范围分区
首先先回到在第10章中提到的Dell Store 2样例数据库的例子中,考虑如下结构的orders
表。
试想一下在经过了多年的经营之后,在诸多订单的洗礼之下,该表上相关的查询会变得愈加笨拙。确定表分区阈值通常的经验法则是,当单个表的大小超过了服务器内存总量或者达到100万行数据的时候就要考虑对该表进行分区。
15.1.1 确定要进行分区的关键字段
在这个例子当中,有两种可能的途径将数据划分成一些较小的块。首先,可以基于orderid
字段对表进行分区。这可能是在实际的部署当中需要去做的事情,因为如果orders表变得很大的时候,orderlines
表会变得更大。这两个表都可以通过orderid
字段来进行有效的分区。 ...
Get PostgreSQL 9.0性能调校 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.