赞
踩
分区是指将一个逻辑上大的表拆分为较小的物理块。主分区表不存储任何数据,数据存储在各个子分区表中。主表与分区表属于一对多的关系,这些子表继承并属于一个主表。
分区可以提供以下好处:
在某些情况下,尤其是当表中大多数被频繁访问的行位于单个分区或少量分区中时,查询性能可以得到显着提高。分区减小了索引的大小,并使索引中频繁使用的部分更有可能装入内存。
当查询或更新访问单个分区的很大一部分时,可以通过对该分区进行顺序扫描而不是使用索引和分散在整个表中的随机访问读取来提高性能。
可以通过添加或删除分区来完成批量加载和删除。使用ALTER TABLE DETACH PARTITION或DROP TABLE进行删除单个分区比批量操作要快得多。这些命令还完全避免了由批量DELETE引起的VACUUM开销。
很少使用的数据可以迁移到更便宜、更慢的存储介质上。
通常只有在表很大的情况下,这些好处才是值得的。表可以从分区中受益的确切时间取决于应用程序,尽管经验法则是表的大小应超过数据库服务器的物理内存。
PostgreSQL 10 以后的版本为分区提供内置支持:
1 范围分区(PARTITION BY RANGE)
该表被划分为由键列或列集定义的“范围”,分配给不同分区的值的范围之间没有重叠。例如,可以按日期范围或特定业务对象的标识符范围进行分区。
2 列表分区(PARTITION BY LIST)
通过显式列出哪些键值出现在每个分区中来对表进行分区。
某系统的一张表含有来自企业内部和企业外部不同数据源的数据,用字段is_inner来标识数据来源,当is_inner=True时
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。