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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值