最近项目要改成网络版,这样原项目肯定不适合,特别是数据库方面,网络版用户会很多,检测到的数据会更多,估算了下,某些表可能超出表的最大容量,因此要对数据库进行优化。
数据库优化主要包括包括对冗余字段的处理,提高查询性能和大表的处理,针对冗余字段,初步看了下,主要是有的字段根本没用到,这个可能是在原来设计的时候考虑太复杂,而现实项目中根本没有用,可以通过重新定义表,删除没有用的字段来处理。提高查询性能可通过建立相关索引,优化sql等手段达到目的。在这里主要对最后一个问题发表点自己的思路。
谈到大表,会不自然的想到分区(拆分表),把一个表分成几个表来处理不就可以了。但我们的项目用的是postgres数据库,它有没有分区的功能?经过查资料,整理出一套方案。
目前,PostgreSQL 支持通过表继承进行分区。 每个分区必须做为单独一个父表的子表进行创建。父表自身通常是空的; 它的存在只是为了代表整个数据集。
PostgreSQL 里面可以实现下面形式的分区:
范围分区
表被一个或者多个键字字段分区成"范围", 在这些范围之间没有重叠的数值分布到不同的分区里。 比如,我们可以为特定的商业对象根据数据范围分区,或者根据标识符范围分区。
列表分区
表是通过明确地列出每个分区里应该出现那些键字值实现的。
目前还不支持散列分区。
要设置一个分区的表,做下面的步骤:
创建"主表",所有分区都从它上面继承下去。
这个表将没有什么数据,不要在这个表上定义任何检查约束&#x
数据库优化主要包括包括对冗余字段的处理,提高查询性能和大表的处理,针对冗余字段,初步看了下,主要是有的字段根本没用到,这个可能是在原来设计的时候考虑太复杂,而现实项目中根本没有用,可以通过重新定义表,删除没有用的字段来处理。提高查询性能可通过建立相关索引,优化sql等手段达到目的。在这里主要对最后一个问题发表点自己的思路。
谈到大表,会不自然的想到分区(拆分表),把一个表分成几个表来处理不就可以了。但我们的项目用的是postgres数据库,它有没有分区的功能?经过查资料,整理出一套方案。
目前,PostgreSQL 支持通过表继承进行分区。 每个分区必须做为单独一个父表的子表进行创建。父表自身通常是空的; 它的存在只是为了代表整个数据集。
PostgreSQL 里面可以实现下面形式的分区:
范围分区
表被一个或者多个键字字段分区成"范围", 在这些范围之间没有重叠的数值分布到不同的分区里。 比如,我们可以为特定的商业对象根据数据范围分区,或者根据标识符范围分区。
列表分区
表是通过明确地列出每个分区里应该出现那些键字值实现的。
目前还不支持散列分区。
要设置一个分区的表,做下面的步骤:
创建"主表",所有分区都从它上面继承下去。
这个表将没有什么数据,不要在这个表上定义任何检查约束&#x