sybase deadlock
在数据库业务高峰的时候经常追踪到异常:
com.sybase.jdbc3.jdbc.SybSQLException: Your server command (family id #0, process id #1227) encountered a deadlock situation. Please re-run your command.
鄙人在网络上查了大量资料,也问了很多人,还是没搞定,只好自己想了。。
对相关的业务表的相关查询字段已经建了索引,以便加快相关查询速度避免锁竞争,还是老报异常,
高峰期的时候每秒报200次以上,痛苦。。
接着看了下sybase的文档“Performance and Tuning-Locking.pdf”(在sybase的网站上可以免费下载),
发现数据库的锁策略和索引的查询效率关系很密切,于是就决定将对应的业务表的锁策略由'allpages'
改为'datapages',问题解决了,没有再报检测到死锁了。。
表锁的时候即使建了索引,再执行相关的操作的时候索引表也会被锁,但是页锁和行锁有更新的时候是
即使释放的,不会锁住。。
希望这篇文章对有相关问题的朋友有帮助。。