GBASE南大通用技术分享:GBase 8s 数据库死锁的解决方案

0 阅读1分钟

南大通用GBase 8s 数据库(gbase database)在运行中发生死锁是如何产生的?如何快速定位并有效避免?

死锁产生原因:多个事务相互持有对方需要的锁资源,并形成循环等待,导致事务无限阻塞无法推进。

快速定位:

  1. 通过"onstat -g lat" 查看锁等待关系;
  2. 通过"onstat -g sql"查看正在执行的事务与 SQL;
  3. 查看数据库日志获取死锁发生时间、会话 ID、锁定对象。

有效避免:

  1. 统一多表访问顺序,不交叉操作;
  2. 缩短事务时长,减少锁持有时间;
  3. 合理设置锁等待超时参数;
  4. 避免大事务、长事务;
  5. 建立合适索引,减少行锁升级为表锁。