MySQL
文章平均质量分 88
MySQL原理解析
扛麻袋的少年
得过且过,一天又一天
展开
-
7.Closing non transactional SqlSession 导致事务失败问题
博主在研究Spring事务源码,编写测试代码时,出现了Closing non transactional SqlSession 导致事务失败的问题,于是写下这篇文章,记录一下这个问题。前提 已经通过配置方式...原创 2020-03-18 15:37:11 · 51145 阅读 · 3 评论 -
一文带你看懂 InnoDB 中的 MVCC、Undo、Redo 机制
本文目录:写在开头1.一题引出MVCC2.什么是 MVCC3.MVCC 在 MySQL 中的体现3.1 插入流程3.2 删除流程3.3 修改流程3.4 查询流程4. 使用 MVCC 后对示例分析4.1 情形一4.2 情形二4.3 情形分析5. Undo Log5.1 什么是 undo log5.2 undo 如何实现事务原子性5.3 快照读、当前读Ⅰ.快照读 (通过MVCC + undo log 解决幻读问题)Ⅱ.当前读 (通过Next-key lock 解决幻读问题)5.4 情形二基于 undo log原创 2020-06-17 17:30:54 · 3033 阅读 · 0 评论 -
InnoDB 事务与锁的前世今生
本文目录:写在开头1.InnoDB 支持的特性2.事务Ⅰ. 什么是事务Ⅱ. 事务的四个特性(ACID)Ⅲ. 事务并发带来的问题Ⅳ. 事务四种隔离级别Ⅴ.查看 MySQL 事务隔离级别Ⅵ.查看 MySQL 是否开启事务3.锁3.1 共享锁(S锁)3.2 排他锁(X锁)3.3 意向锁3.3.1 意向共享锁(IS锁)3.3.2 意向排他锁(IX锁)3.4 自增锁3.5 临键锁 & 间隙锁 & 记录锁3.5.1 临键锁 (InnoDB引擎默认行锁算法)3.5.2 间隙锁3.5.3 记录锁4.事务并发原创 2020-06-15 16:35:46 · 1600 阅读 · 2 评论 -
不会MySQL调优?来来瞅瞅SQL的执行计划吧
写在开头 本文属于 MySQL底层执行流程分析 的一个中间过程。由于这一步在 MySQL 整个执行流程中占据不少的分量,并且这一部分也经常被拿来在面试中提问。所以将 MySQL 执行计划单独摘出来介绍。什么是执行计划 执行计划,通常是开发者优化SQL语句的第一步。MySQL 在解析SQL语句时,会生成多套执行方案,它的查询优化器是基于成本计算原则,它会尝试各种执行计划,以数据抽样的方式进行试验(随机的读取一个 4K 的数据块进行分析),最终选择一个最优的方案执行。然后根据这个方案来生成一个执行计划原创 2020-06-11 09:45:08 · 1538 阅读 · 0 评论 -
一条SQL语句的坎坷之旅(MySQL底层执行流程分析)
本文目录:写在开头MySQL 执行流程1.MySQL 客户端/服务端通信2.MySQL 查询缓存写在开头 MySQL 凭借其不花钱的特性,在我们项目开发中占有很大一部分。虽然我们会用 sql语句来进行数据查询,但是你有了解过 MySQL 是如何进行查询的吗? 在面试中,我们也经常被问到SQL 优化的内容,加个索引是最简单而且高效的一种方法,但是除此之外你还知道其他方式吗? 本文就来简单介绍一下 MySQL 底层查询,到底是怎么一个执行流程。MySQL 执行流程MySQL 执行流程,分为原创 2020-06-10 15:01:10 · 1266 阅读 · 0 评论 -
MySQL为什么没有走索引?是这些原因在搞鬼
1.列的离散性 你知道吗?即使你对数据库中你要查询的列添加了索引,它也有可能不会走索引。 这其实和一个叫 列的离散性 相关的问题。在数据库表中,MySQL 在查询时,会对表中查询的列进行离散性计算。计算出的离散性结果越大,说明这一列的离散型越好,选择性就越好。 列的离散性计算公式为:count(distinct col) : count(col)。我们来计算一下下图三列的离散性:为什么说:离散性越好,选择性就越好呢? 我们将上图 sex 列进行 B+Tree 二叉树转换(男:0 女:1)。附原创 2020-06-09 16:22:33 · 4115 阅读 · 2 评论 -
还不了解 MyISAM 和 InnoDB 的区别?看这里就够了
MyISAM 和 InnoDB 作为 MySQL 两大常用的存储引擎,经常在面试中被提及到。本文就来介绍一下它们之间的区别。 如果你想了解MySQL 存储引擎相关内容,请跳转链接:一文带你看懂 MySQL 存储引擎区别: 1.InnoDB 支持事务,MyISAM 不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的In原创 2020-06-05 18:56:53 · 15852 阅读 · 1 评论 -
一文带你看懂 MySQL 存储引擎
本文目录:1.MySQL体系结构2.存储引擎介绍3.MySQL 存储引擎特性4.MySQL 有哪些存储引擎5.了解 MySQL 数据存储方式6.存储引擎介绍6.1 CSV存储引擎6.1.1 使用CSV存储引擎建表6.1.2 查看数据所在硬盘位置6.2 Archive存储引擎6.2.1 使用Archive存储引擎建表6.2.2 Archive对比InnoDB,使用函数批量存储1w条数据6.3.3 查看数据所在硬盘位置6.2.4 使用命令对比数据容量占用情况6.3 Memory5.【重点】InnoDB 和 My原创 2020-06-05 13:22:39 · 13139 阅读 · 3 评论 -
了解MySQL体系结构
写在开篇: 对于信息技术人员来说,世界上最受欢迎的开源数据库系统的体系结构非常重要。MySQL在世界范围内受欢迎的原因很多,但主要原因之一是它的体系结构,尽管有许多大型公司,例如Oracle,Microsoft SQL和DB2,但MySQL的体系结构使其成为大多数开发人员的独特且首选的选择。在本文中,我们将讨论MySQL关系数据库管理系统的内部体系结构。本文适用于新手数据库管理员,数据库开发人员,软件开发人员以及对使用MyS原创 2020-06-04 18:09:30 · 1244 阅读 · 0 评论 -
MySQL内置函数随手收藏,用时翻出来看看就好
MySQL笔记(九):如下展示:MySQL常用函数,用作备份翻阅查看原创 2020-04-09 13:45:04 · 962 阅读 · 0 评论 -
CentOS 6.2 安装 MySQL 5.7.28
MySQL笔记(一):1.环境准备 1.MySQL安装路径:/usr/local 2.CentOS 6.2 服务器(64 bit) 3.MySQL5.7.28 下载(64bit) wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar...原创 2019-11-13 15:18:39 · 2263 阅读 · 0 评论 -
ERROR 1862 (HY000): Your password has expired. To log in you must change it using a .....
MySQL笔记(二):错误信息: ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords出现问题原因: 可能是你在安装 MySQL过程中,通过mysqld --initialize 初始化 mys...原创 2019-11-13 19:46:39 · 12474 阅读 · 0 评论 -
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
MySQL笔记(三):错误信息: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)出现问题原因: 有可能是 my.cnf 配置文件中设置了 [mysqld] 的参数 socket ,而没有设置[client]的参数socketmysql.sock...原创 2019-11-14 09:59:32 · 4501 阅读 · 3 评论 -
mysqld: unrecognized service
MySQL笔记(四):错误信息: ERROR 2002 (HY000): mysqld: unrecognized service出现问题原因: 通过 [命令:service mysqld start ],启动 mysql 服务时,报mysqld: unrecognized service 错误。 原因是:Linux 在添加 mysqld 到自启动时, 如果你添加后名...原创 2019-11-14 13:11:05 · 9256 阅读 · 2 评论 -
MySQL 5.7.28 主从复制实现
MySQL笔记(五):1.环境准备 1.MySQL版本:5.7.28 2.两台已安装 MySQL 的 Linux服务器 (Linux如何安装MySQL,请跳转:CentOS 6.2 安装 MySQL 5.7.28) IP:192.168.204.201(master) 192.168.204.202(slave)2.主从复制原理原理解析: 1............原创 2019-11-15 16:38:47 · 3381 阅读 · 0 评论 -
SQL 性能问题解决方案
MySQL笔记(六):1.什么原因导致数据库性能瓶颈问题 1.数据库连接数 2.表数据量大(你可能会加索引,加索引后,命中索引还好;如果命不中索引,将会进行全表扫描,数据量越大,效率越低)(数据库索引,是硬盘级别的索引。基础B树实现,它是存储在硬盘里面IO 操作。索引越多,树越大,查询效率也会降低) 3.硬件资源问题导致瓶颈(QPS/TPS) (每秒事务数/每秒查询数)2.数据库性能优化方案...原创 2019-11-18 09:37:40 · 1968 阅读 · 0 评论 -
MySQL 索引底层为什么选择B+Tree
MySQL笔记(七):MySQL索引 索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。为什么要使用索引索引能够大大的减少存储引擎需要扫描的数据量,无索引则进行全表扫描;索引可以把随机IO变成顺序IO(因为IO操作很耗时);索引可以帮助我们在...原创 2020-01-16 10:05:51 · 2979 阅读 · 0 评论 -
MySQL语句练习50题
MySQL笔记(八):前言 鉴于长时间不写sql语句,导致对sql有点遗弃,发现目前还是需要将sql捡起来,所以我从网上找来了这套题目,题目看着也还行,看了网上的这套题的部分答案,很多都是基于结果来编写sql语句了,思想完全不对了,如果要是再多加几条数据,sql就完全没法用了,还是有一部分是错误的。 诸如本题中的19题【按各科成绩进行排序,并显示排名】,分别对01课程,02课程,03课程...原创 2019-05-13 17:58:13 · 1722 阅读 · 0 评论