网站总是打不开网站页脚模板

diannao/2026/1/17 4:35:16/文章来源:
网站总是打不开,网站页脚模板,网站快照时间,上饶市建设局官方网站前言如果有人问你“数据库事务有哪些特性”#xff1f;你可能会很快回答出原子性、一致性、隔离性、持久性即ACID特性。那么你知道InnoDB如何保证这些事务特性的吗#xff1f;如果知道的话这篇文章就可以直接跳过不看啦(#^.^#)先说结论#xff1a;redo log重做日志用来保证事…前言如果有人问你“数据库事务有哪些特性”你可能会很快回答出原子性、一致性、隔离性、持久性即ACID特性。那么你知道InnoDB如何保证这些事务特性的吗如果知道的话这篇文章就可以直接跳过不看啦(#^.^#)先说结论redo log重做日志用来保证事务的持久性undo log回滚日志保证事务的原子性undo logredo log保证事务的一致性锁(共享、排他)用来保证事务的隔离性重做日志 redo log重做日志 redo log 分为两部分一部分是内存中的重做日志缓冲(redo log buffer)是易丢失的二部分是重做日志文件(redo log file)是持久的。InnoDB通过Force Log at Commit机制来实现持久性当commit时必须先将事务的所有日志写到重做日志文件进行持久化待commit操作完成才算完成。InnoDB在下面情况下会将重做日志缓冲的内容写入重做日志文件master thread 每一秒将重做日志缓冲刷新到重做日志文件;每个事务提交时当重做日志缓冲池剩余空间小于1/2时为了确保每次日志都写入重做日志文件在每次将日志缓冲写入重做日志文件后InnoDB存储引擎都需要调用一次fsync(刷盘)操作。但这也不是绝对的。用户可以通过修改innodb_flush_log_at_trx_commoit参数来控制重做日志刷新到磁盘的策略这个可以作为大量事务提交时的优化点。1参数默认值表示事务提交时必须调用一次fsync操作。0表示事务提交时重做日志缓存并不立即写入重做日志文件而是随着Master Thread的间隔进行fsync操作。2表示事务提交时将重做日志写入重做日志文件但仅写入文件系统的缓存中不进行fsync操作。fsync的效率取决于磁盘的性能因此磁盘的性能决定了事务提交的性能也就是数据库的性能。所以如果有人问你如何优化Mysql数据库的时候别忘了有硬件这一条让他们提升硬盘配置换SSD固态硬盘重做日志都是以512字节进行存储的称之为重做日志块与磁盘扇区大小一致这意味着重做日志的写入可以保证原子性不需要doublewrite技术。它有以下3个特性重做日志是在InnoDB层产生的重做日志是物理格式日志记录的是对每个页的修改重做日志在事务进行中不断被写入而且是顺序写入回滚日志 undo log为了满足事务的原子性在操作任何数据之前首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log)然后进行数据的修改。如果出现了错误或者用户执行了 ROLLBACK语句系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。undo log实现多版本并发控制(MVCC)来辅助保证事务的隔离性。回滚日志不同于重做日志它是逻辑日志对数据库的修改都逻辑的取消了。当事务回滚时它实际上做的是与先前相反的工作。对于每个INSERTInnoDB存储引擎都会完成一个DELETE对于每个UPDATEInnoDB存储引擎都会执行一个相反的UPDATE。事务提交后并不能马上删除undo log这是因为可能还有其他事务需要通过undo log 来得到行记录之前的版本。故事务提交时将undo log 放入一个链表中是否可以删除undo log 根据操作不同分以下2种情况Insert undo log insert操作的记录只对事务本身可见对其他事务不可见(这是事务隔离性的要求),故该undo log可以在事务提交后直接删除。不需要进行 purge操作。update undo log记录的是对 delete和 update操作产生的 undo log。该undo log可能需要提供MVCC机制因此不能在事务提交时就进行删除。提交时放入undo log链表,等待 purge线程进行最后的删除。锁事务的隔离性的实现原理就是锁因而隔离性也可以称为并发控制、锁等。事务的隔离性要求每个读写事务的对象对其他事务的操作对象能互相分离。再者比如操作缓冲池中的LRU列表删除添加、移动LRU列表中的元素为了保证一致性那么就要锁的介入。锁的类型InnoDB主要有2种锁行级锁意向锁行级锁共享锁(读锁 S)允许事务读一行数据。事务拿到某一行记录的共享S锁才可以读取这一行并阻止别的事务对其添加X锁。共享锁的目的是提高读读并发。排它锁(写锁 X)允许事务删除一行数据或者更新一行数据。事务拿到某一行记录的排它X锁才可以修改或者删除这一行。排他锁的目的是为了保证数据的一致性。行级锁中除了S和S兼容其他都不兼容。意向锁意向共享锁(读锁 IS )事务想要获取一张表的几行数据的共享锁事务在给一个数据行加共享锁前必须先取得该表的IS锁。意向排他锁(写锁 IX)事务想要获取一张表中几行数据的排它锁事务在给一个数据行加排他锁前必须先取得该表的IX锁。解释一下意向锁The main purpose of IX and IS locks is to show that someone is locking a row, or going to lock a row in the table.意向锁的主要用途是为了表达某个事务正在锁定一行或者将要锁定一行数据。e.g:事务A要对一行记录r进行上X锁那么InnoDB会先申请表的IX锁再锁定记录r的X锁。在事务A完成之前事务B想要来个全表操作此时直接在表级别的IX就告诉事务B需要等待而不需要在表上判断每一行是否有锁。意向排它锁存在的价值在于节约InnoDB对于锁的定位和处理性能。另外注意了除了全表扫描以外意向锁都不会阻塞。锁的算法InnoDB有三种行锁的算法Record Lock单个行记录上的锁Gap Lock间隙锁锁定一个范围而非记录本身Next-Key Lock结合Gap Lock和Record Lock锁定一个范围并且锁定记录本身。主要解决的问题是REPEATABLE READ隔离级别下的幻读。可以参考文章了解事务隔离级别的相关知识点。这里主要讲一下Next-Key Lock利用Next-key Lock锁定的不是单个值而是一个范围他的目的就是为了阻止多个事务将记录插入到同一范围内从而导致幻读。注意了如果走唯一索引那么Next-Key Lock会降级为Record Lock即仅锁住索引本身而不是范围。也就是说Next-Key Lock前置条件为事务隔离级别为RR且查询的索引走的非唯一索引、主键索引。下面我们用个例子详细说一下。首先建立一张表CREATE TABLE T (id int ,f_id int,PRIMARY KEY (id), KEY(f_id)) ENGINEInnoDB DEFAULT CHARSETutf8insert into T SELECT 1,1;insert into T SELECT 3,1;insert into T SELECT 5,3;insert into T SELECT 7,6;insert into T SELECT 10,8;事务A执行如下语句SELECT * FROM T WHERE f_id 3 FOR UPDATE这时SQL语句走非唯一索引因此使用Next-Key Locking加锁并且有2个索引其需要分别进行锁定。对于聚集索引其仅对id等于5的索引加上Record Lock。而对于辅助索引其加上Next-Key Lock锁定了范围(1,3)特别需要注意的是InnoDB存储引擎还会对辅助索引下一个键值加上Gap Lock即范围(3.6)的锁。所以如果在新session中执行如下语句都会报错[Err] 1205 - Lock wait timeout exceeded; try restarting transactionselect * from T where id 5 lock in share MODE -- 不能执行因为事务A已经给id5的值加上了X锁执行会被阻塞INSERT INTO T SELECT 4,2 -- 不能执行辅助索引的值为2在(1,3)的范围内执行阻塞INSERT INTO T SELECT 6,5 -- 不能执行gap锁会锁住(3,6)的范围执行阻塞此时想象一下事务A锁定了f_id 5 的记录 正常会有个gap lock锁住(5,6)那么如果没有(5,6)的gap锁那么用户可以插入索引 f_id 为5的记录这样事务A再次查询就会返回一个不同的记录也就导致了幻读的产生。同理如果我们事务A执行的是select * from T where f_id 10 FOR UPDATE,在表里查不到数据但是基于Next-Key Lock会锁住(8∞)我们执行INSERT INTO T SELECT 6,11是无法插入成功的这就从根本上解决了幻读问题。总结以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作具有一定的参考学习价值谢谢大家对脚本之家的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无锡做网站选优易信米问外贸论坛

📖 前言:在网络安全防护领域,防火墙是保护网络安全的一种最常用的设备。网络管理员希望通过在网络边界合理使用防火墙,屏蔽源于外网的各类网络攻击。但是,防火墙由于自身的种种限制,并不能阻止所有攻击行为…

微信官网网站模板闽候县建设局网站

https://dev.mysql.com/doc/index-other.htmlalso, you can visit https://github.com/datacharmer/test_db for employee data.

网站建设群网站建站的技术解决方案

人工智能(AI)和深度学习是当今技术领域最热门的话题之一。如果你想要入门深度学习,以下是一些建议和步骤,可以帮助你开始这段旅程: 1. 建立数学基础 深度学习依赖于数学,特别是线性代数、概率论、统计学和…

公共化网站建设方案wordpress 谷歌插件

当涉及到构建安全的应用程序时,用户身份验证和授权是至关重要的一环。在Node.js中,我们可以利用一些流行的库和技术来实现这些功能,确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

网站建设与管理pdf电商运营是干嘛的

很多有具有参考价值的资料,比如学生写论文报告,老师做课件,找工作准备简历都需要参考其他人的成果。在互联网上,这类资料一般不是普通的html网页,而是以Word、ppt(s)、Excel、pdf等格式存在的。虽然这些文件不象Html文…

开店装修话做那个网站找工人合肥做网站建设公司

一、概述 在NX二次开发中有很多命令从界面上看起开相似,但实质确不同,个人人为一是出于对软件产权的保护,增加二次开发的难度,二是由于NX在不断地发展和版本交替中为了保留老用户的操作习惯,故意用新控件做成老控件的…

建一个网站的费用wordpress副标题代码

一、 CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃。CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候&#xff0c…

电商网站的建设与运营开公司注册空头公司做网站

前言 Django自带了一个名为FileField的字段,用于处理文件上传。然而,有时我们需要更多的控制权,例如定义文件的存储路径、文件名以及文件类型。在本篇文章中,我们将探讨如何自定义Django附件存储模型。 创建attachment应用 pyt…

网站开发需要如何压缩代码临桂住房和城乡建设局网站

简介 这篇文章主要描述如何通过主脚本去调用其他脚本中的方法,调用的过程中可能出现哪些坑,如何避免。 目录 1. 主脚本调用其他脚本的方法 1.1. bash方法 1.2. source方法 2. 避坑技巧 2.1. 路径配置无效 2.2. source变量冲突 3. 总结 1. 主脚本调…

做关键字要改网站那些知名网站是外包做的

Linux read命令介绍 read命令是处理从键盘或其它输入设备读入字符的一个简单命令。常见用法就是在shell脚本中用来读取用户的输入。除此之外,也可以从文件中读取内容或处理由其它命令输出的内容。 Linux read命令适用的Linux版本 read命令在所有主流的Linux发行版…

做网站优化就是发文章吗网站目录结构

人工智能的未来发展前景怎么样?人工智能的未来发展前景非常广阔,有以下几个方面的发展趋势和前景: 1、人工智能的未来发展前景-应用领域扩展:人工智能将在各个领域得到广泛应用,包括医疗保健、金融、交通、制造业、农业…

网站的更新频率企业大型网站建设要多少钱

认识webpack 面向过程开发的不便引入外部js执行顺序面向对象开发 加载多个文件耗时更多 增加了http请求 引入过多js变量来源不明 优化 使用前先import 但使用import语法需要借助工具webpack翻译为浏览器可以解析的语法安装node自动携带npmwebpack若没有全局安装 需要使用npx…

黑色企业网站网站里的副栏目是什么

想要了解老字号申请的可以看过来!合肥各区县中华老字号、“安徽老字号”“合肥老字号”认定奖励补贴和申报条件材料指南如下,蜀山区、包河区、庐阳区、瑶海区、政务区、经济技术开发区、高新区、滨湖新区、新站区、长丰县、肥东县、肥西县各地需要申报的…

注册网站要语音验证码的有哪些wordpress 页面空白页

前言 分页查询在日常开发中无法避免,但每次sql编写时,mybatis 中使用limit,oracle中使用rownum分页,业务场景少的情况下,可以接受.但是随着业务增加每次相同的功能做重复开发又不是那么方便,那么我们有什么方案去解决开发中出现的分页问题呢? 一、PageHelper 框架分页 首先我…

在linux上做网站搭建商标免费设计

今天boke112百科登录某个WordPress站点时,又出现“管理员邮件确认”的提示,要求确认此站点的管理员电子邮箱地址是否仍然正确。具体如下图所示: 如果点击“稍后提醒我”,那么管理员邮件验证页面就会在3天后重新显示。 说实话&…

注册公司网站源码更换网站备案

先上干货 github:https://github.com/flutter/flutter 官网:http://flutter.io/ 中文资源:https://flutter-io.cn/ 当然我也用其他敏捷式平台开发过APP,比如APICloud、uiapp,相比Flutter难度会小一些。 用户的需求 移动软件开发的困难 这…

网站被百度k是什么意思wordpress重定向次数过多310

Postman之页面简介 V9.31.0 一、顶部栏二、左部栏三、中部栏四、下部栏 一、顶部栏 (1)new选项框,生成新建请求、集合、环境等 (2)import选项框,可以导入文件、文件夹、链接、文本信息等 (3&…

网站建设简单案例深圳世茂前海中心

从0到1理解MySQL的事务和ACID特性 在开始之前,我们先来了解一下MySQL的事务是什么,以及ACID是什么。 事务是什么? 事务可以简单地理解为一组数据库操作的集合,它们一起被视为一个不可分割的工作单元。事务要么全部成功执行&…

哪些公司用.cc做网站hishop官网

目录 async 关键字await 关键字使用 async 和 await 解决回调地狱问题错误处理总结 在JavaScript中, async和 await是用于简化基于 Promise的异步编程的关键字。在ES2017(也称为ES8)中引入后,它们迅速成为管理异步代码的首选方…

做的网站怎么进入互联网wordpress 京东主题

机器学习–jupyter notebook的使用 Jupyter项目是一个非盈利的开源项目,源于2014年的ipython项目,因为它逐渐发展为支持跨所有编程语言的交互式数据科学和科学计算 Jupyter Notebook,原名IPython Notbook,是IPython的加强网页版…