当前位置: 首页 > news >正文

专业郑州网站建设江苏省建设厅官方网站

专业郑州网站建设,江苏省建设厅官方网站,建筑设计和室内设计的区别,如何识别网站的建站程序使用数据库时#xff0c;有时会出现死锁。对于实际应用来说#xff0c;就是出现系统卡顿。 死锁是指两个或两个以上的事务在执行过程中#xff0c;因争夺资源而造成的一种互相等待的现象。就是所谓的锁资源请求产生了回路现象#xff0c;即死循环#xff0c;此时称系统处于…使用数据库时有时会出现死锁。对于实际应用来说就是出现系统卡顿。 死锁是指两个或两个以上的事务在执行过程中因争夺资源而造成的一种互相等待的现象。就是所谓的锁资源请求产生了回路现象即死循环此时称系统处于死锁状态或系统产生了死锁。常见的报错信息为“Deadlock found when trying to get lock...”。 上图中很明显是右侧的四辆汽车造成了死锁。 死锁发生以后只有部分或完全回滚其中一个事务才能打破死锁。多数情况下只需要重新执行因死锁回滚的事务即可。下面我们通过一个实例来了解死锁是如何产生的。 例 1 为了方便读者阅读操作之前我们先查询 tb_student 表的数据和表结构。 mysql SELECT * FROM tb_student; ---------------------------- | id | name | age | sex | num | ---------------------------- | 1 | 张三 | 31 | 男 | 4 | | 2 | 李四 | 28 | 男 | 4 | | 3 | 王五 | 13 | 女 | 4 | | 4 | 张四 | 13 | 女 | 4 | | 5 | 王四 | 15 | 男 | 4 | | 6 | 赵六 | 12 | 女 | 4 | ---------------------------- 6 rows in set (0.01 sec)mysql DESC tb_student; -------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | -------------------------------------------------------- | id | int(4) | NO | PRI | NULL | auto_increment | | name | varchar(25) | NO | | NULL | | | age | int(11) | YES | MUL | NULL | | | sex | char(1) | YES | | NULL | | | num | int(11) | YES | | NULL | | -------------------------------------------------------- 5 rows in set (0.00 sec) 以下操作需要打开两个会话窗口即下面所提到的 A窗口和 B窗口。 在 A窗口中执行以下命令 mysql BEGIN; mysql UPDATE tb_student SET num5 WHERE age13; Query OK, 2 rows affected (0.04 sec) Rows matched: 2 Changed: 2 Warnings: 0 紧接着在 B窗口中执行以下命令。由于 age 是索引字段与 A窗口中更新的是不同行的数据所以这时不会出现锁等待现象。 mysql BEGIN; mysql UPDATE tb_student SET num8 WHERE age15; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 然后在 A窗口中执行以下命令这时就会出现锁等待现象了。 mysql UPDATE tb_student SET num10 WHERE age15; 最后在 B窗口中执行以下命令这时会出现相互等待资源的现象也就是死锁现象。 mysql UPDATE tb_student SET num12 WHERE age13; ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction 我们可以通过 SHOW ENGINE INNODB STATUS 命令查看死锁的信息运行结果如下这里只展示了部分信息 LATEST DETECTED DEADLOCK ------------------------ 2020-08-24 16:22:23 0x3944 *** (1) TRANSACTION: TRANSACTION 22656, ACTIVE 108 sec starting index read mysql tables in use 1, locked 1 LOCK WAIT 5 lock struct(s), heap size 1136, 6 row lock(s), undo log entries 2 MySQL thread id 33, OS thread handle 8808, query id 1689 localhost ::1 root updating UPDATE tb_student SET num10 WHERE age15 *** (1) WAITING FOR THIS LOCK TO BE GRANTED: RECORD LOCKS space id 197 page no 8 n bits 80 index index_age of table test.tb_student trx id 22656 lock_mode X waiting Record lock, heap no 5 PHYSICAL RECORD: n_fields 2; compact format; info bits 0 0: len 4; hex 8000000f; asc ;; 1: len 4; hex 80000005; asc ;; ......通过以上日志我们就能确定造成死锁的事务和 SQL 语句。 死锁检测 InnoDB 的并发写操作会触发死锁同时 InnoDB 也提供了死锁检测机制。通过设置 innodb_deadlock_detect 参数的值来控制是否打开死锁检测。 innodb_deadlock_detect ON 默认值打开死锁检测。数据库发生死锁时系统会自动回滚其中的某一个事务让其它事务可以继续执行。innodb_deadlock_detect OFF关闭死锁检测。发生死锁时系统会用锁等待来处理。 锁等待是指在事务过程中产生的锁其它事务需要等待上一个事务释放锁才能占用该资源。如果该事务一直不释放就需要持续等待下去直到超过了锁等待时间。当超过锁等待允许的最大时间就会出现死锁然后当前事务执行失败自动执行回滚操作。 MySQL 通过 innodb_lock_wait_timeout 参数控制锁等待的时间单位是秒。 mysql SHOW VARIABLES LIKE %innodb_lock_wait%; --------------------------------- | Variable_name | Value | --------------------------------- | innodb_lock_wait_timeout | 120 | --------------------------------- 1 row in set, 1 warning (0.02 sec) 在实际应用中我们要尽量防止锁等待现象的发生下面介绍几种避免死锁的方法 如果不同程序会并发存取多个表或者涉及多行记录时尽量约定以相同的顺序访问表这样可以大大降低死锁的发生。业务中要及时提交或者回滚事务可减少死锁产生的概率。在同一个事务中尽可能做到一次锁定所需要的所有资源减少死锁产生概率。对于非常容易产生死锁的业务部分可以尝试使用升级锁粒度通过表锁定来减少死锁产生的概率表级锁不会产生死锁。
http://www.w-s-a.com/news/596280/

相关文章:

  • 唐山企业网站网站建设费计入那个科目
  • 企业网站制作运营彩虹云主机官网
  • 如何建设废品网站如何在阿里云云服务器上搭建网站
  • 如何建立网站后台程序wordpress 后台管理
  • 山东外贸网站建设怎么样wordpress首页左图右文
  • 志丹网站建设wordpress 形式修改
  • 南通seo网站推广费用网站建设就业前景
  • 自适应网站做mip改造浏览器广告投放
  • 网站meta网页描述网站的推广费用
  • 偃师市住房和城乡建设局网站网站个人主页怎么做
  • 做网站要实名认证吗wordpress去掉仪表盘
  • 在哪做网站好Python建网站的步骤
  • 卢松松的网站办公室设计布局
  • 住房城乡建设干部学院网站织梦网站0day漏洞
  • 企业网站seo优帮云手机桌面布局设计软件
  • 无证做音频网站违法吗智能建站加盟电话
  • 鹿泉专业网站建设做网站为什么要建站点
  • 加强网站建设和维护工作新闻大全
  • 红鱼洞水库建设管理局网站左右左布局网站建设
  • 手机网站建设地址做网站公
  • 贵州建设厅网站首页网络公司除了做网站
  • 运动鞋建设网站前的市场分析wordpress 搜索框代码
  • app开发网站开发教程平台网站开发的税率
  • 百度网站优化排名加强服务保障满足群众急需i
  • 宁夏建设职业技术学院网站安徽网站优化建设
  • 四川关于工程建设网站硬盘做网站空间
  • 桂林网站制作培训学校外包seo公司
  • 莱州网站建设方案北京装修公司口碑
  • 大型网站建设济南兴田德润团队怎么样韩国女足出线了吗
  • 南通做网站找谁重庆网络推广网站推广