微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql笔记(一

1.Postgresql中的数据块大小是固定的8KB,当有数据的长度超过限制时,会被拆分为多个物理行存储在TOAST表中;只有大小超过块大小的四分之一时,才会触发TOAST压缩,这样就会出现“数据量大的表反而占用的空间大小小”的现象 2.fillfactor是填充因子,即数据块填充了百分之多少就不再进行填充了;比如fillfactor=40即往一个数据块填入40%后就不再填充了,剩余的空间给更新用;故频繁更新的表应该设置较小的填充因子 3.分区表的优点:a.删除历史数据更快(例如按天分区表)2.各个分区表上有各自的索引,查询时单个分区表的索引可以完全缓存在内存里c.查询某一部分数据时可以快速定位到分区表,而不用离散的访问整张表 缺点:入库复杂 多大数据量该用分区表:当表大小大于数据库服务器物理内存大小时 4.利用规则创建可更新视图 假如有表: create table pjtest(id int); 有视图: create view v_pjtest as select * from pjtest; 创建规则: create rule rule_pjtest_insert as on insert to v_pjtest do instead insert into pjtest(id) values(NEW.id); create rule rule_pjtest_update as on update to v_pjtest do instead update pjtest set id=NEW.id; create rule rule_pjtest_delete as on delete to v_pjtest do instead delete from pjtest where id=OLD.id; 此时: insert into v_pjtest values(1); 我们: select * from pjtest; 可以看到插入视图的语句,实际把数据插入到了物理表中;不过,从上面的示例可以看出,RULE还是比较弱的。 5.如果一个字段是数组类型,那么就需要用gin索引;hash索引不写WAL日志,在表崩溃或者索引更新失败后无法恢复,只能重建索引,使用需要谨慎;认的b-tree索引适用于等值查询和范围查询 6.创建索引时会锁表,阻碍对于表的插入、更新、删除,如果需要不阻碍需要在建立索引的语句中加入concurrently,如create index concurrently index_pjtest on pjtest(id);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐