情况:
我有一张桌子 A。
我想将大量数据加载到表 A 中(比如说几百万条记录或更多)
好的,所以我寻找选项等,我得出的结论是我应该在加载时禁用表的索引 ok :
*更改索引 your_index 不可用;*
但是在加载过程中,其他进程和系统可以搜索表 A 中的数据并将数据插入表 A。所以我需要使用:
*改变系统设置skip_unusable_indexes = true;*
加载数据后,我重建索引并清除标志。
好的,这里有一个问题:
查询会使用我的索引(当它设置为不可用时) - 我们正在谈论大表,没有索引它们将超时
如果 1 为真,在我重建索引之前,新插入的记录(我的意思是通过其他进程而不是批量加载插入的记录)会发生什么情况,它们在查询时是否返回?是否有可能以某种方式部分重建索引/为一个会话禁用它们并为另一个会话保留?
我的意思是,在大型系统中这种情况并不罕见——要加载大量数据,但系统需要保持响应。
总而言之 - 分区和分区交换看起来像是要走的路