![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL高级
文章平均质量分 95
MySQL高级
迷茫却坚定
这个作者很懒,什么都没留下…
展开
-
第16章_多版本并发控制
本质也是一种数据结构嘛!在MVCC机制中,多个事务对同一个行记录进行更新会产生多个历史快照,这些历史快照保存在Undo Log里。如果一个事务想要查询这个行记录,需要读取哪个版本的行记录呢?这时就需要用到ReadView了,它帮我们解决了行的可见性问题。ReadView就是事务在使用MVCC机制进行快照读操作时产生的读视图。当事务启动时,会生成数据库系统当前的一个快照,InnoDB为每个事务构造了一个数组,用来记录并维护系统当前活跃事务的ID("活跃"指的就是,启动了但还没提交)。。原创 2023-06-18 15:55:50 · 361 阅读 · 1 评论 -
第15章_锁
锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源〈如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。原创 2023-06-17 15:32:30 · 522 阅读 · 0 评论 -
第14章_MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制 实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为,提供,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。原创 2023-06-17 11:48:36 · 438 阅读 · 0 评论 -
第14章_MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制 实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为,提供,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。原创 2023-06-16 21:12:51 · 520 阅读 · 0 评论 -
第13章_事务基础知识
数据库对象,指的就是数据库、表、视图、存储过程等结构。当我们使用CREATE、ALTER、 DROP等语句去修改数据库对象时,就会隐式的提交前边语句所属于的事务。原创 2023-06-16 13:33:35 · 311 阅读 · 0 评论 -
第12章_数据库其它调优策略
尽可能节省系统资源,以便系统可以提供更大负荷的服务。(吞吐量更大)合理的结构设计和参数调整,以提高用户操作 响应的速度。(响应速度更快)减少系统的瓶颈,提高MySQL数据库整体的性能。原创 2023-06-03 19:05:17 · 464 阅读 · 0 评论 -
第11章_数据库的设计规范
第11章_数据库的设计规范1. 为什么需要数据库设计我们在设计数据表的时候,要考虑很多问题。比如:用户都需要什么数据?需要在数据表中保存哪些数据?如何保证数据表中数据的正确性,当插入、删除、更新的时候该进行怎样的约束检查?。如何降低数据表的数据冗余度,保证数据表不会因为用户量的增长而迅速扩张?如何让负责数据库维护的人员更方便地使用数据库?使用数据库的应用场景也各不相同,可以说针对不同的情况,设计出来的数据表可能千差万别。现实情况中,面临的场景:当数据库运行了一段时间之后,我们才发现数据表原创 2023-06-03 16:31:56 · 819 阅读 · 0 评论 -
第10章_索引优化与查询优化
理解方式一 :索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据;当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。理解方式二︰非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是,索引列+主键包含SELECT到FROM之间查询的列。原创 2023-06-03 16:05:43 · 595 阅读 · 0 评论 -
第09章_性能分析工具的使用
定位了查询慢的SQL之后,我们就可以使用EXFLAIN或DESCRBE工具做针对性的分析查询语句\textcolor{red}{定位了查询慢的SQL之后,我们就可以使用EXFLAIN或 DESCRBE工具做针对性的分析查询语句}定位了查询慢的SQL之后,我们就可以使用EXFLAIN或DESCRBE工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。原创 2023-04-18 15:55:11 · 449 阅读 · 0 评论 -
第08章_索引的创建与设计原则
① 冗余索引有时候有意或者无意的就对同一个列创建了多个索引,比如: index(a,b,c)相当于index(a)、index(a,b)、index(a,b,c)。我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一 个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引。原创 2023-04-08 21:00:25 · 821 阅读 · 0 评论 -
第7章_InnoDB数据存储结构
页a、页b、页c…页n这些页可以不在物理结构上相连,只要通过双向链表相关联即可。每个数据页中的记录会按照主键值从小到大的顺序组成一个单向链表,每个数据页都会为存储在它里边的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分法快速定位到对应的槽,然后再遍历该槽对应分组中的记录即可快速找到指定的记录。:这个属性标记着当前记录是否被删除,占用1个二进制位。值为0:代表记录并没有被删除值为1:代表记录被删除掉了被删除的记录为什么还在页中存储呢?原创 2023-04-08 20:45:15 · 224 阅读 · 0 评论 -
第06章_索引的数据结构
索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现高级查找算法。 索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。原创 2023-04-04 18:16:37 · 684 阅读 · 0 评论 -
第05章_存储引擎
MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。InnoDB是MySQL的默认事务型引擎\textcolor{orange}{ 默认事务型引擎 }默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoD。原创 2023-04-04 16:56:38 · 329 阅读 · 0 评论 -
第03章_用户与权限管理
有一些程序员喜欢使用Root超级用户来访问数据库,完全把权限控制放在应用层面实现。这样当然也是可以的。但建议大家,尽量使用数据库自己的角色和用户机制来控制访问权限,不要轻易用Root账号。因为Root账号密码放在代码里面不安全,一旦泄露,数据库就会完全失去保护。而且,MySQL的权限控制功能十分完善,应该尽量利用,可以提高效率,而且安全可靠。原创 2023-04-02 18:21:19 · 677 阅读 · 0 评论 -
第02章_MySQL的数据目录
这样的存储引擎都是把表存储在磁盘上的,操作系统用来管理磁盘的结构被称为文件系统,所以用专业一点的话来表述就是:像InnoDB、MyISAM这样的存储引擎都是把表存储在文件系统上的。 在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为每一个表建立一个独立表空间,也就是说我们创建了多少个表,就有多少个独立表空间。就是该表的名称,表里边有多少列,每个列的数据类型,约束条件和索引,使用的字符集和比较规则等各种信息,这些信息都体现在了我们的建表语句中了。原创 2023-04-02 17:25:01 · 82 阅读 · 0 评论 -
第01章_Linux下MySQL的安装与使用
sqLmode会影响MySQL支持的SQL语法以及它执行的数据验证检查。通过设置sqLmode,可以完成不同严格程度的数据校验,有效地保障数据准确性。MySQL服务器可以在不同的SQL模式下运行,并且可以针对不同的客户端以不同的方式应用这些模式,具体取决于sql_mode系统变量的值。5.6的mode默认值为空(即:NO_ENGINE_SUBSTITUTION),其实表示的是一个空值,相当于没有什么模式设置,可以理解为宽松模式。在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。原创 2023-04-01 17:47:19 · 472 阅读 · 0 评论 -
第04章_逻辑架构
如 mysql 、 information_schema、 performance_schema 数据库中的表,那。原创 2023-03-31 16:20:55 · 117 阅读 · 0 评论