我们有一个带有Postgresql 9.1数据库的电子商务门户.一个非常重要的表目前有3200万条记录.如果我们想要提供所有项目,这个表将增长到3.2亿条记录,主要是日期.哪个会很重.
所以我们正在考虑水平分区/分片.我们可以将此表中的项目划分为12个横向(每月1个).这样做的最佳步骤和技术是什么?数据库中的水平分区是否足够好,还是我们必须开始考虑分片?
在postgresql 9.1中插入大量数据时.使用Python脚本,我们在此查询上收到以下错误:
X: psycopg2.ProgrammingError in /home/hosting/apps/X
X_psycopg.py:162 in : Execute 'execute' (
SELECT * FROM xml_fifo.fifo
WHERE type_id IN (1,2)
ORDER BY type_id, timestamp LIMIT 10
): out of shared memory
HINT: You might need to increase max_pred_locks_per_transaction
我们增加了这个数字但仍然没有共享内存(max_pred_locks_per_transaction = 192).每次我们再次启动脚本时它会运行一段时间,然后给出此错误消息.在Postgres 8.1上我们没有遇到这个问题.
这是postgresql日志文件的一部分:
2012-06-28 02:55:43 CEST HINT: Use the escape string syntax for backslashes, e.g., E'\\'. 2012-06-28 02:55:43 CEST WARNING: nonstandard use of \\ in a string literal at character 271 2012-06-28 02:55:43 CEST HINT: Use the escape string syntax …