将分区切换到现有 table
Switch partition into existing table
Oracle 和 SQL 服务器具有此功能,允许将 tables 分区切换到现有的 table(例如 here)。我找不到 Sybase ASE 的类似功能。
问题 A 部分:有没有办法在 Sybase ASE 中切换分区?
如果答案是'no',我不确定如何进行。我的情况是我有一个非常大的 table ,它按日期索引。现在我需要为新日期 T_n+1.
添加数据
large table new
-------------------- ------
|T1|T2|T3| .... |Tn| + |Tn+1|
-------------------- ------
如果我先将索引放在 table 上,插入速度足够快,但是重新创建索引会花费很多时间。必须有更好的方法!
问题 B 部分:将 Tn+1 的数据添加到大型 table.
中的最快方法是什么
回答 A 部分:
虽然 Sybase ASE 支持移动分区和合并分区,但这些命令在单个 table 中工作,即 Sybase ASE 不支持分区在(不同)tables 之间移动。
回答 B 部分:
假设删除和重新创建索引的成本太高(就时间而言;就用户需要索引来访问其他分区而言),除了一些基础知识之外,您没有太多选择来加速插入:
- 批量插入
- 最小化事务数量(即,减少必须写入日志的次数)
- 为插入数据的会话禁用触发器[显然您需要决定如何处理驻留在触发器中的任何必备逻辑]
- 提高锁定升级阈值(对于 table)以确保您不会升级到 table 级别的独占锁;仅当您无力使用 table 级别的独占锁来阻止其他用户时才感兴趣;可能需要提高 锁数 配置设置; ASE 16.0+ 的问题较少,因为插入应该只升级到分区级锁
- 如果您要从这个 table 中进行复制,您可能需要考虑复制插入与直接将数据插入复制的开销 table(s) [显然需要禁用复制对主 table]
的插入
Oracle 和 SQL 服务器具有此功能,允许将 tables 分区切换到现有的 table(例如 here)。我找不到 Sybase ASE 的类似功能。
问题 A 部分:有没有办法在 Sybase ASE 中切换分区?
如果答案是'no',我不确定如何进行。我的情况是我有一个非常大的 table ,它按日期索引。现在我需要为新日期 T_n+1.
添加数据large table new
-------------------- ------
|T1|T2|T3| .... |Tn| + |Tn+1|
-------------------- ------
如果我先将索引放在 table 上,插入速度足够快,但是重新创建索引会花费很多时间。必须有更好的方法!
问题 B 部分:将 Tn+1 的数据添加到大型 table.
中的最快方法是什么回答 A 部分:
虽然 Sybase ASE 支持移动分区和合并分区,但这些命令在单个 table 中工作,即 Sybase ASE 不支持分区在(不同)tables 之间移动。
回答 B 部分:
假设删除和重新创建索引的成本太高(就时间而言;就用户需要索引来访问其他分区而言),除了一些基础知识之外,您没有太多选择来加速插入:
- 批量插入
- 最小化事务数量(即,减少必须写入日志的次数)
- 为插入数据的会话禁用触发器[显然您需要决定如何处理驻留在触发器中的任何必备逻辑]
- 提高锁定升级阈值(对于 table)以确保您不会升级到 table 级别的独占锁;仅当您无力使用 table 级别的独占锁来阻止其他用户时才感兴趣;可能需要提高 锁数 配置设置; ASE 16.0+ 的问题较少,因为插入应该只升级到分区级锁
- 如果您要从这个 table 中进行复制,您可能需要考虑复制插入与直接将数据插入复制的开销 table(s) [显然需要禁用复制对主 table] 的插入