Cod*_*.ie 7 database postgresql
根据PostgreSQL 的简单配置建议,设置最灵活和可管理的环境的推荐最佳实践是创建一个特定于应用程序的表空间,该表空间在 /pgdata- app_tblspc有自己的挂载点,并且“对于每个模式应该至少有两个表空间. 一个用于表,一个用于索引”
我能够创建这些挂载点和表空间,但想知道如何将模式分配给特定的表空间。据我所知,表空间通过 CREATE DATABASE ... TABLESPACE ... 命令与数据库挂钩,但 CREATE SCHEMA 命令中没有 TABLESPACE 指令。
按照 Simple Configuration Recommendation 文档的逻辑,似乎隐含的建议是为每个应用程序创建一个数据库,每个数据库映射到两个表空间:一个用于数据,另一个用于索引。
但是,同一份文档继续说,特定于应用程序的数据库不是维护应用程序之间数据分离的首选方式。拥有一个具有多个模式的数据库是一种可行的方法。
我在这里缺少什么?感谢任何指针。
为什么没有CREATE SCHEMA表空间子句?
模式提供数据的逻辑分离,而表空间提供物理分离。只有保存数据的对象(如表和索引)在其CREATE语句中才有表空间子句。模式没有关联的数据文件。
如果您希望位于不同模式中的表位于不同的表空间中,则必须向每个CREATE TABLEandCREATE INDEX语句添加一个表空间子句。
您是否应该为每个应用程序使用两个表空间,一个用于表,另一个用于索引?
我会说这取决于您的性能要求和数据量。
如果您正在处理一个数 TB 的数据仓库,并且希望通过将数据分布在不同的存储系统上来优化性能,那么使用表空间将是一个有趣的选择。
对于小型数据库,我会说这不值得麻烦,如果您购买足够的 RAM 以将数据库放入内存中,您会更好。
不同的数据库或不同的模式是为不同的应用程序分离数据的更好方法吗?
如果应用程序需要访问彼此的数据,请将它们放在一个数据库中的不同模式中。否则使用两个数据库来确保它们不会混淆彼此的数据。
总的来说,如果您想限制表的增长或者表空间位于不同的存储系统上以进行负载分配,那么表空间是很好的。