作者:瀚高PG实验室 (Highgo PG Lab)- z
正常情况下Postgresql建立普通btree索引时会阻塞DML(insert,update,delete)操作,直到索引完成,期间读操作不受阻塞。oracle数据库有在线创建的选项online。Postgresql也提供了相关的功能concurrently,使用方法:
create index concurrently index_name on tablename();
###使用concurrently的代价
不使用这个参数建索引时DB只扫描一次表,使用这个参数时,会引发DB扫两次表,同时等待所有潜在会读到该索引的事务结束,系统的CPU和IO,内存等会受一些影响。