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

网站建设宣传广告建设网站的功能定位

网站建设宣传广告,建设网站的功能定位,中国建设银行遵义市分行网站,小米手机网站的风格设计全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后#xff0c;整个数据库就处于只读状态了#xff0c;这种状态下#xff0c;对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外#xff0c;当会话断开#xff0c;全…全局锁 使用 # 启用全局锁 flush tables with read lock # 释放全局锁 unlock tables开启全局锁后整个数据库就处于只读状态了这种状态下对数据的增删改操作、对表结构的更改操作都会被阻塞。 另外当会话断开全局锁也会被自动释放 应用场景 全局锁主要应用于做全库逻辑备份这样在备份数据库期间不会因为数据或表结构的更新而出现备份文件的数据与预期的不一样。 如果不使用全局锁直接备份的话可能会出现下面的情况 用户A用户B开始备份用户A的银行余额向B转账结束备份开始备份用户B的余额这时,用户A的余额既没有减少,用户B的余额也增加了 缺点 如果数据库里有很多数据备份就会花费很多的时间关键是备份期间业务只能读数据而不能更新数据这样会造成业务停滞。 改进 要求数据库的引擎支持的事务支持可重复读的隔离级别隔离级别相关的知识见隔离如InnoDB但是比如MyISAM不支持事务就不能应用以下的方法。 在备份数据库之前先开启事务会先创建Read View然后整个事务期间都用这个Read View而且由于MVCC的支持备份期间业务也可以对数据库进行更新操作。 因为在可重复读的隔离级别下即使其他事务更新了表的数据也不会影响备份数据库时的 Read View这就是事务的隔离性这样备份期间备份的数据一直是在开启事务时的数据。 备份数据库的工具是 mysqldump在使用 mysqldump 时加上 –single-transaction 参数的时候就会在备份数据库之前先开启事务。 表级锁 MySQL 里面表级别的锁有这几种 表锁元数据锁MDL意向锁AUTO-INC 锁 表锁 使用 对表test使用表锁 # 表级别的共享表锁也就是读锁 lock tables test read;# 表级别的独占表锁也就是写锁 lock tables test write;# 释放表锁 unlock tables如果本线程对某表加了「共享表锁」那么所有线程接下来如果要对该表执行写操作的语句都会被阻塞直到锁被释放。当会话退出后也会自动释放所有表锁。 另外尽量避免在使用 InnoDB 引擎的表使用表锁因为表锁的颗粒度太大会影响并发性能。 元数据锁MDL 我们不需要显式的使用 MDL因为当我们对数据库表进行操作时会自动给这个表加上 MDL 对一张表进行 CRUD 操作时加的是 MDL 读锁对一张表做结构变更操作的时候加的是 MDL 写锁 MDL 是为了保证当用户对表执行 CRUD 操作时防止其他线程对这个表结构做了变更当有线程在执行 select 语句 加 MDL 读锁的期间如果有其他线程要更改该表的结构 申请 MDL 写锁那么将会被阻塞直到执行完 select 语句 释放 MDL 读锁。反之当有线程对表结构进行变更 加 MDL 写锁的期间如果有其他线程执行了 CRUD 操作 申请 MDL 读锁那么就会被阻塞直到表结构变更完成 释放 MDL 写锁。 MDL释放时机 MDL 是在事务提交后才会释放事务执行期间MDL 是一直持有的。 可能导致的问题 考虑以下场景 线程A线程B线程C开启事务select(此时自动加上MDL读锁)select(不会阻塞,因为读读事务不冲突)修改表字段(阻塞) 在线程C阻塞后,后续对该表的所有select语句都会被阻塞,可能导致数据库连接线程用光 原因 出现上面那种情况的原因是因为MDL锁的操作会形成一个队列,因为写锁的优先级高于读锁,一旦队列中出现写锁等待,后面加入的读锁请求都将在写锁后面等着 所以,如果要对表结构进行变更,应当先查看数据库中是否有比较长的事务,如果有的话可以考虑kill掉长事务,再做表结构的变更 意向锁 在使用 InnoDB 引擎的表里对某些记录加上「共享锁」之前需要先在表级别加上一个「意向共享锁」在使用 InnoDB 引擎的表里对某些纪录加上「独占锁」之前需要先在表级别加上一个「意向独占锁」 也就是当执行插入、更新、删除操作需要先对表加上「意向独占锁」然后对该记录加独占锁。而普通的 select 是不会加行级锁的普通的 select 语句是利用 MVCC 实现一致性读是无锁的。但是普通select语句也可以加共享锁和独占锁如下 //先在表上加上意向共享锁然后对读取的记录加共享锁 select ... lock in share mode;//先表上加上意向独占锁然后对读取的记录加独占锁 select ... for update;意向共享锁和意向独占锁是表级锁不会和行级的共享锁和独占锁发生冲突允许多个事务同时更改不同行的数据而且意向锁之间也不会发生冲突也允许边读边写只会和共享表锁lock tables … read和独占表锁lock tables … write发生冲突。 如果没有「意向锁」那么加「独占表锁」时就需要遍历表里所有记录查看是否有记录存在独占锁这样效率会很慢。那么有了「意向锁」由于在对记录加独占锁前先会加上表级别的意向独占锁那么在加「独占表锁」时直接查该表是否有意向独占锁如果有就意味着表里已经有记录被加了独占锁这样就不用去遍历表里的记录。 所以意向锁的目的是为了快速判断表里是否有记录被加锁。 AUTO_INC锁 概念 在插入数据时可以不指定主键的值使用AUTO_INCREMENT修饰让mysql来自动维护主键自增这个自增主要通过AUTO_INC锁来实现的。 在插入数据时会自动添加一个表级别的AUTO_INC锁然后为被AUTO_INCREMENT修饰的字段赋值等插入语句完成后才会把锁释放掉。既当一条事务在插入时其他事务如果也想插入都会被阻塞从而保证该字段是连续递增的。相应的这个操作也会影响插入的性能。 InnoDB InnoDB 存储引擎提供了一种轻量级的锁来实现自增。 当它在插入数据的时候同样会为被 AUTO_INCREMENT 修饰的字段加上轻量级锁但是在它给该字段赋完一个自增的值之后就把这个轻量级锁释放了而不需要等待整个插入语句执行完后才释放锁。 行级锁 锁定读 InnoDB 引擎是支持行级锁的而 MyISAM 引擎并不支持行级锁。这也是InnoDB的最大的优势 普通的 select 语句是不会对记录加锁的因为它属于快照读。如果要在查询时对记录加行锁可以使用下面这两个方式这种查询会加锁的语句称为锁定读。 # 对读取的记录加共享锁 select ... lock in share mode;# 对读取的记录加独占锁 select ... for update;上面这两条语句必须在一个事务中因为当事务提交了锁就会被释放所以在使用这两条语句的时候要加上 begin、start transaction 或者 set autocommit 0。 共享锁又称S锁满足读读共享、读写互斥独占锁又称X锁满足写写互斥、读写互斥 行级锁的类型主要有 Record Lock记录锁也就是仅仅把一条记录锁上Gap Lock间隙锁锁定一个范围但是不包含记录本身Next-Key Lock临键锁Record Lock Gap Lock 的组合锁定一个范围并且锁定记录本身 Record Lock 记录锁锁住的是一条记录。记录锁有S锁和X锁之分并且满足读读共享、读写互斥、写写互斥 mysql begin; # X锁之后其他事务都无法修改该记录 mysql select * from test where id 1 for update;# 释放锁 mysql commit;Gap Lock Gap Lock 只存在于可重复读隔离级别目的是为了解决可重复读隔离级别下幻读的现象。 间隙锁锁住的是一个字段之间的间隙其他事务无法向这个间隙中插入字段如表中有一个范围 id 为35间隙锁那么其他事务就无法插入 id 4 这条记录了以此防止幻读。 间隙锁虽然存在 X 型间隙锁和 S 型间隙锁但是并没有什么区别间隙锁之间是兼容的即两个事务可以同时持有包含共同间隙范围的间隙锁并不存在互斥关系 插入意向锁 一个事务在插入一条记录的时候需要判断插入位置是否已被其他事务加了间隙锁next-key lock 也包含间隙锁。 如果有的话插入操作就会发生阻塞直到拥有间隙锁的那个事务提交为止释放间隙锁的时刻在此期间会生成一个插入意向锁表明有事务想在某个区间插入新记录但是现在处于等待状态等待状态并不意味着事务成功获取到了锁正常状态才是 插入意向锁并不是意向锁它是一种特殊的间隙锁属于行级别锁 两个事务不可能同时一个拥有间隙锁另一个拥有该间隙的插入意向锁 Next-Key Lock 锁定一个范围并且锁定记录本身。Next-key lock既能保护该记录又能阻止其他事务将新纪录插到被保护记录前面的间隙中。 如表中有一个范围 id 为35] 的 next-key lock那么其他事务即不能插入 id 4 记录也不能修改 id 5 这条记录。 因为Next-key lock包含记录锁所以不能有两个事务同时获取相同范围的Next-key lock。
http://www.hkea.cn/news/14333298/

相关文章:

  • 高权重网站做员会来顶排名上海企业宣传片制作
  • 在线定制家具成都关键词优化平台
  • 网站会员模板wordpress移动主题
  • 建网站语言信息流优化师培训机构
  • 网站建设总体说明china东莞seo
  • 网站制度建设网站优化排名软件哪些 最好
  • 京东的网站是哪家公司做做女装网站应怎么定位
  • 宁夏企业网站建设php网站怎么做静态化
  • 比较好的建站系统湖南省城乡建设勘测院 网站
  • wordpress站群服务器凡科网建设网站如何修改源代码
  • 灵璧县建设局网站苏州专业高端网站建设公司
  • 静安区建设工程招标投标管理部门网站网站开发的实训周
  • 易语言怎么制作网站永川网站制作
  • 安卓4.3网站开发兼容中国建设网上银行
  • 房屋出租网站模板wordpress 无法登陆 后台
  • 建站资源工程信息
  • 旅游网站开发项目介绍工厂软件管理系统
  • 众筹网站开发周期wordpress文章图片格式
  • 做ps可以在哪些网站上找素材算命网站开发
  • 网站建设分金手指排名十二如何只做网站
  • 网站空间ftp单位企业邮箱怎么申请
  • 网站为什么吸引人php网站编程
  • 网站建设包含什么郑州做营销型网站
  • 做底单的网站网站大全软件
  • 网站开发应该怎么学十大网站建设公司排名
  • 那曲网站建设罗斯app界面设计常用的布局具有哪些
  • 公司新闻做网站潍坊建设网站公司电话
  • 外贸网站关键词开三云匠网
  • 网站服务器租用价格怎么算福多多在线观看
  • 梓潼网站建设青海省住房城乡建设厅网站