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

山西响应式网站哪家好网站 个人 公司 区别

山西响应式网站哪家好,网站 个人 公司 区别,英文seo 文章发布类网站,php帝国建站系统mysql的锁 读写锁: 读锁是共享锁,多个用户在同一时刻可以读取同一资源,相互不受干扰写锁是排他锁,写锁会阻塞其他的写锁和读锁,这样可以确保在指定的时间内,只有一个用户可以写入 锁的颗粒度: …
mysql的锁
  • 读写锁:
    • 读锁是共享锁,多个用户在同一时刻可以读取同一资源,相互不受干扰
    • 写锁是排他锁,写锁会阻塞其他的写锁和读锁,这样可以确保在指定的时间内,只有一个用户可以写入
  • 锁的颗粒度:
    • 想要提高并发性,就需要尽可能的只锁住需要修改的资源,而不是所有资源
    • 同时加锁也需要消耗资源,锁的各种操作都会增加系统的开销,影响系统的性能
    • 所以锁的策略就是在锁的开销和数据安全性之间寻找平衡
    • MySQL提供了多种选择,每种存储引擎都可以实现自己的锁策略和锁粒度,针对不同场景有不同的解决方案
      • 表锁
        • 表锁是mysql最基本的锁策略,它的开销最小,但他会锁定整张表,想要进行写操作,必须先获取写锁,这会阻塞其他用户对表的读写操作
        • 虽然存储引擎有自己的锁策略,但是例如 Alter table 这种操作仍然是表锁,会忽略存储引擎的锁机制
      • 行级锁
        • 行级锁可以最大程度的支持并发处理,但同时也带来了最大的锁开销
        • 行级锁只在存储引擎层实现,mysql服务层没有实现
      • mvcc(多版本并发控制)
        • 可以认为是行级锁的变种,在很多情况下可以避免加锁,开销更低
        • innodb的MVCC,是通过每行记录保存两个隐藏的列来实现的,一个是行的创建版本号,一个是删除版本号,每开始一个新的事务,版本号都会自动递增

mysql的死锁:

  • 当多个事务试图以不同的顺序锁定资源时,就有可能产生死锁,多个事务同时锁定一个资源时也有可能产生死锁
  • 例如A事务先更新第一行数据,在更新第二行数据,B事务先更新第二行数据,在更新第一行数据,这样就会导致两个事务都在等待对方释放锁,同时又持有对方需要的锁,陷入死循环
  • 为了解决这种问题,数据库实现了各种死锁检查和超时机制,innodb目前处理死锁的方法是,将持有最少行级排他锁的事务回滚
  • 死锁一旦发生,只有部分或者完全回滚其中一个事务,才能打破死锁,对于事务型的系统,这是无法避免的,所以需要在程序设计时考虑如何避免死锁
mysql事务

事务的基本要素:ACID事务:

  • 原子性:事务是一个不可分割的单位,事务中的操作要么都发生,要么都不发生
  • 一致性:事务前后数据的完整性必须保持一致,方便回滚
  • 隔离性:事务与事务之间的操作不能相互干扰
  • 持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久的,即使接下来数据库发生故障,也不应该对其有任何影响

事务日志:

  • 事务日志可以提高事务效率,使用事务日志,存储引擎在修改表的数据的时候,只需要修改内存拷贝,再把修改行为持久化到硬盘上的事务日志,

  • 内存中的数据在后台可以慢慢的刷回磁盘,不用每次都将修改的数据本身持久化到磁盘,也就是修改数据其实需要写两次磁盘

  • 事务日志采用的是追加的方式,是顺序I/O

mysql中的事务:

  • mysql默认采用自动提交,也就是说如果不是显示的指定一个事务的开始,每次操作都会被当成一个事务执行提交操作
  • mysql可以识别4个隔离级别,innodb也支持所有的隔离级别
  • 事务是由存储引擎实现的,所以在同一个事务中,使用多种存储引擎是不可靠的
    • 例如在事务中混用了事务型表和非事务型表,如果回滚非事务型表也无法撤销,会导致数据的不一致,这种情况很难修复,事务的最终结果也无法确定
  • 锁也分为显示和隐式,存储引擎自己加的锁,都是隐式的,当然也可以自己显示的加锁,但是这样不仅没有必要,还会影响性能

事务的隔离级别

  • 读未提交

    • 如果一个事务开始了写操作,虽然不允许其他事务同时进行写操作,但允许其他事务读取数据,有可能出现脏读,也就是读取到了其他事务未提交的数据。
  • 读已提交

    • 对于一行数据,如果有一个写事务将会禁止其他事务访问该行数据,避免了脏读,但是可能出现不可重复读,
    • 也就是事务A事先读取了数据,事务B紧接着更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。
  • 可重复读

    • 可重复读取是指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据,这样避免了不可重复读和脏读,但是有时可能会出现幻读。
    • 也就是一个事务在前后两次查询同一个范围的时候,因为只是禁止事务对查询到的数据进行操作,并不能禁止其他事务插入新的数据,所以后一次查询会看到了前一次查询没有看到的行
    • mysql还额外增加了范围锁,避免了幻读问题
  • 串行化

    • 要求事务序列化执行,事务只能一个接着一个地执行
    • 序列化是最高的事务隔离级别,同时代价也是最高的,性能很低,一般很少使用,在该级别下,事务顺序执行,可以避免脏读、不可重复读以及幻读。
  • MySQL默认隔离级别为:可重复读 (Repeated read),Oracle默认隔离级别为:读已提交(READ COMMITTED)

http://www.yayakq.cn/news/737956/

相关文章:

  • 签合网站是哪个好公司网站建设行业怎么样
  • 宜宾百度网站建设微信模板消息
  • 鄂州市住房和城乡建设部网站怎么自己做网站怎么赚钱
  • 大型购物网站设计学校网站建设汇报
  • 怎样做一个网站本溪做网站的公司
  • 《电子商务网站建设》精品课南宁seo排名原理
  • 海南省交通建设局网站制作企业网站要花多少钱
  • 制作企业网站要多少钱北京网站建设方案
  • 深圳网站制作必选祥奔科技婴儿衣服做的网站好
  • 徐州网站建设 网站制作网上商城可行性分析报告
  • 建设发展公司网站深圳建网站哪家公司好
  • 网站点击量与排名北京官网建设多少钱
  • wap 2.0的网站安徽康东建设工程有限公司网站
  • 万网服务器网站建设模板网站的域名是什么意思
  • 个人外贸网站制作交易类网站做支付宝功能
  • 乌兰浩特网站建设wordpress菜单左对齐
  • 宁波网站建设公司哪个好平价网站平价网站建设建设
  • 网站开发卖东西时彩网站开发
  • 智慧团建网站初始密码菏泽哪里做网站
  • 重慶网站建设网站开发接私活的经理
  • 网站平台建设设备清单嘉峪关市建设局建管科网站
  • 网站seo设计方案案例wordpress怎么显示文章时间
  • 企业三合一建站公司怎么找wordpress linux
  • 沈阳网站设计制作seo技术教程在线咨询
  • 响应式网站的好处下载软件的网站推荐
  • 宁波网站运营优化系统申请域名的方法和流程
  • 做学校法人年度报告的网站临沂法律网站开发公司
  • 重庆网站建设学习寺庙网站开发
  • wordpress自建会员杭州seo工作室
  • 网站系统接口500异常电视台网站模版