我正在使用 ASE 15.0.3 并且在尝试在表中执行批量插入(通过 sql 查询而不是存储过程)时时不时地抛出异常的 java 进程存在问题。以下是例外:
JZ0BE: BatchUpdateException: Error occurred while executing batch statement: Your server command (family id #0, process id #61) encountered a deadlock situation. Please re-run your command.
它尝试插入的表有很多列,但在 id(int 标识)列上只有一个(非聚集)索引。
与此表交互的其他(并发)进程可以执行以下两件事之一:
1) Select data from the table (transaction based)
2) Delete data from the table (transaction based, and first requiring an
exclusive table lock with wait 20 sec).
预感是死锁来自索引页。无法将锁定机制转换为数据页或数据行,因为该表包含许多大的可变字符列,所有这些列加起来超过8191
字节,并且显示:...exceeds limit of 8191 bytes for column-offset of variable-length columns in DOL tables. Future inserts to this table may fail.
关于如何避免这种情况的任何想法?(除了从表中删除索引)。
谢谢