如何制定一个有效的网站规划书,以常平众展为例?
摘要:常平众展做网站,网站规划书500字,拉新推广变现app,大学生求职简历模板免费下载作者:困了电视剧 专栏:《MySQL数据库》 文章分布:这是一篇关于
常平众展做网站,网站规划书500字,拉新推广变现app,大学生求职简历模板免费下载作者#xff1a;困了电视剧 专栏#xff1a;《MySQL数据库》 文章分布#xff1a;这是一篇关于Java中异常类的文章#xff0c;在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程#xff0c;如有疏漏#xff0c;欢迎大佬指正#xff01; 目录
索引
用法
底层逻辑… 作者困了电视剧 专栏《MySQL数据库》 文章分布这是一篇关于Java中异常类的文章在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程如有疏漏欢迎大佬指正 目录
索引
用法
底层逻辑
事务
并发执行事务可能产生的问题
脏读问题
不可重复读
幻读 索引
索引是一种特殊的文件包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引 并指定索引的类型各类索引有各自的数据结构实现。1.数据库中的表、数据、索引之间的关系类似于书架上的图书、书籍内容和书籍目录的关 系。 2.索引所起的作用类似书籍目录可用于快速定位、检索数据。 3.索引对于提高数据库的性能有很大的帮助。 用法
create index 索引名 on 表名(字段名); 当我们将数据放入一个表中时这里先假定这个表的名字是student表中存储的是student的个人信息如果只是一个客户端并且此时数据库中的数据很少那MySQL的服务器还可以在极短的时间里完成处理但如果数据库中存储的数据很多呢那当我们想进行查询的时候就需要一条一条数据的进行比较如果此时又不止一个客户端访问数据库而是很多的客户端同时访问数据库呢那需要的时间又需要增加许多。这就造成了很多麻烦为了解决这一问题MySQL采用的方法之一就是建立一个索引。当你建立了一个索引时在进行查找就会大大降低所消耗的时间但是这同时也存在一个弊端当你需要对数据库中的数据进行更改的时候那你的目录索引就也要进行相应的更新这就增加了操作所需要的时间。现在可能有人要问了这索引这么玄乎那他底层的原理是什么底层逻辑
当创建一个MySQL的索引就是构建一个B树这个树中的元素就是数据库中存储的内容。
我们在了解B树之前先了解什么是B树B树又称B-树是一个n叉搜素树如图所示 此时我们发现如果数据库中的数据按这种方式进行排列的话数据参差不齐很难找到我们需要的数据此时就需要我们的B树来进行安排了。 除了叶子节点其他节点保留的仅仅是一个键值也就是用primary定义的key然后最后一排的叶子节点中存储的才是每一个完整的数据就比如如果是学生那叶子节点以外的存储的是id编号而叶子结点存储的则是每一个学生的姓名班级等等。
B数会使所有的数据都出现在叶子节点上并且叶子节点都在同一个高度这就使查找的时候效率大大增高。
事务
在生活中我们会遇到这样的问题当我们再给别人转账的时候如果我们转出500在对方账户上进行转入500时发生了错误那怎么办我们的500块钱就会这样打水漂了嘛
不会为了解决这一问题MySQL引入了事务这一概念。
事务的本质是将多个sql语句给打包成一个整体要么全部执行成功要么就一个都不执行而不会出现执行一半这种中间状态。这体现了事务最核心的特性——原子性。
注这里的一个都不执行是并不是完全不执行而是如果在执行一半时突然出错了就停止执行并将已经执行的部分给进行还原所以看起来就好像没有执行过一样这种方式叫做“回滚”。 事务的特性 1.原子性——最核心的特性。 2.一致性数据执行前后数据一定要是靠谱的就比如转500一个用户少了500另一个用 户却多了5000这就是不靠谱的数据。 3.持久性事务修改的内容是写到硬盘上的持久存在的重启也不丢失。 4.隔离性这个“隔离性”是为了解决“并发”执行事务引起的问题。 并发执行事务可能产生的问题
脏读问题
在事务A对数据库中的数据进行修改的时候如果此时事务B进来读了数据那此时这个事务B读的数据就是脏数据因为这个数据不是准确的不确定事务A会不会在进行修改。
为了解决这一个问题MySQL引入了“写操作加锁”这样的机制即当事务A在对数据进行修改的时候事务B不能进行读操作。
不可重复读
当事务A修改好后此时事务B进行读操作但当事务B进行读的过程中事务A又来进行修改了那事务B读的数据又不准确了。
于是MySQL引入了“读操作加锁”这个机制是数据的准确性大大增加提高了事务的隔离性但同时事务的并发处理能力也下降了。
幻读
在引入读写加锁后还可能会出现这样的问题就是虽然我这一个文件在我读的时候不会发生改变了但是我可能还有其他很多文件这些个文件并没有上锁所以当我一次性读完时我发现我刚才读的那个没有改变但其他的却发生了变化这在一些情况下是不允许的。
