将分区切换到现有表

时间:2017-06-21 06:48:23

标签: sybase-ase

Oracle和SQL Server具有此功能,允许将表分区切换到现有表(例如,here中讨论过)。我无法为Sybase ASE找到类似的功能。

问题A部分:有没有办法在Sybase ASE中切换分区?

如果答案是'否'我不确定如何继续。我的观点是,我有一个非常大的表,按日期索引。现在我需要为新的日期T_n + 1添加数据。

large table             new
--------------------   ------
|T1|T2|T3| .... |Tn| + |Tn+1|
--------------------   ------

如果我首先删除表上的索引,插入速度足够快,但重新创建索引需要花费大量时间。必须有更好的方法!

问题B部分:将Tn + 1数据添加到大表中的最快方法是什么。

1 个答案:

答案 0 :(得分:1)

回答A部分:

虽然Sybase ASE支持移动分区合并分区,但这些命令在单个表中工作,即Sybase ASE不支持(不同)之间的分区移动表。

回答B部分:

假设删除和重新创建索引太昂贵了(就时间而言;就需要索引来访问其他分区的用户而言),除了一些基础之外,你没有留下很多选项来加速插入:< / p>

  • 批量插入
  • 最小化事务数量(即减少必须写入日志的次数)
  • 禁用插入数据的会话的触发器[显然你需要决定如何处理驻留在触发器中的任何必备逻辑]
  • 提高锁定升级阈值(对于表格)以确保您不会升级到表级别的独占锁定;如果你不能用表级别的独占锁来阻止其他用户,那么只会感兴趣;可能需要提高数量的锁配置设置;因为插入应该只升级到分区级锁
  • ,所以ASE 16.0+不会出现问题
  • 如果您要复制此表,您可能需要考虑复制插入的开销与直接将数据插入复制表[显然需要禁止将插入复制到主表]