
MySQL
文章平均质量分 77
眉头
chase
展开
-
MySQL事务隔离级别的实现原理——LBCC + MVCC (InnoDB)
由于Mysql 默认的隔离级别是Repeatable Read、所以本篇文章的部分结论是基于RR隔离级别得出事务具有四大特性 ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)关于原子性、一致性、和持久性是如何保证的,在前面文章中已经介绍:传送门本文只介绍事务隔离级别相关的特性违反事务隔离级别的几个特征首先需要了解一下违反事物隔离级别的几个特征:脏读当前事务中读取到了其它没有提交的事务修改的数据———读.原创 2020-12-02 09:03:41 · 1716 阅读 · 0 评论 -
⚠️Mysql 三大Log——Redo Log、Undo Log、Bin Log,以及Mysql的两阶段提交 吧拉吧拉吧拉吧拉吧拉
关于这三个log,redo log 和 undo log 是归属于Innodb 存储引擎的 ,bin log 是归属于 mysql Server 这个层面的。redo log 和 undo log 都是存储引擎层面上生成的日志,并且都记录了数据的修改,只不过 redo log记录的是"物理级别"上的页修改操作,undo log 记录的是逻辑操作日志,比如对某一行数据进行了INSERT语句操作,那么 undo log就记录一条与之相反的DELETE操作。Redo Log —— 保证事务持久性,数据异常恢原创 2020-11-25 09:40:44 · 881 阅读 · 0 评论 -
Mysql join 的本质,Nested Loop Join 和 Hash Join
Mysql 在不同版本对join的实现有不同的实现方式,mysql5.7之前,是通过Nested Loop join方式实现的,在mysql 8以后对这种嵌入循环查询的方式采用hash join的算法进行了优化。注:如下引用内容均摘抄与Mysql官网Nested Loop JoinMySQL executes joins between tables using a nested-loop algorithm or variations on it.MySQL使用嵌套循环算法或它的变体来执行表之原创 2020-09-25 19:23:58 · 2973 阅读 · 1 评论 -
创建Mysql数据库 Can't create database XXX (errno: 15938145),完美解决
情况:创建数据库报错:Can’t create database XXX (errno: 15938145)排除权限问题偶然看了一篇文章,说重启系统会自动恢复部分故障的重启后,启动mysql报错Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’翻到入下博客完美解决问题https:...转载 2020-01-08 14:36:10 · 7674 阅读 · 0 评论 -
MySQL 执行计划和MySQL执行过程
SQL执行计划数据库服务器在执行sql语句的时候,会准备几套方案,最后选择消耗资源最小的那个方案。 MYSQL架构图: MYSQL执行流程客户端连接服务器。 查询缓存。不会直接查询数据库。会从缓存中查看是否存在相同语句的执行计划,如果存在将省略语法检查、语言检查、加锁、权限核对、SQL优化等过程。直接执行SQL语句。(以下为没缓存的情况) 语法检查。查...原创 2018-07-30 18:13:53 · 1678 阅读 · 0 评论 -
Mysql 采用树前序算法优化无限层级结构
前序遍历: 特点:前序遍历首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。这种方式的表结构,可以很方便的找到对应节点的所有子节点或父节点的信息。具体实现步骤如下:前序遍历二叉树图:数据结构(主要字段)主要思路根据记录左右节点获取子孙节点或父子节点。如:南方集团深圳分部的子孙节点为的...原创 2018-08-23 16:37:23 · 2681 阅读 · 0 评论 -
SQL 语句性能优化
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索...原创 2018-11-14 09:15:33 · 816 阅读 · 0 评论 -
java 员工轮询值班排班 开发设计(mysql+redis)
JAVA 员工轮询 值班 排班1.设计一个值班历史纪录表 duty_employee_history(area_id,dept_id) 联合主键,存放已值班过的数据area_id int(11) NOT NULL 区域dep_id int(11) NOT NULL 部门employee_ids varchar(2000) NOT NULL 已值班过的 ...原创 2018-12-19 20:01:00 · 6998 阅读 · 1 评论