MySQL
MySQL
Gene Xu
个人博客:https://blog.xujun.pro;个人公众号:Sakura动漫ACG
展开
-
MySQL -- 14 -- MySQL(InnoDB)当前读和快照读
官方文档:Gap Locks官方文档:Next-Key Locks一、当前读当前读,会对读取的记录加锁,保证其他并发事务不会修改当前记录,读取的是记录的最新版本简单来说,当前读就是加了锁的增删改查语句,不管上的共享锁还是排他锁,均为当前读相关 SQL:select ... lock in share mode、select ... for update、update、delete、insert实现方式行锁是对单行记录上的锁行锁 + Gap 锁的组合称为.原创 2020-08-21 15:17:00 · 487 阅读 · 0 评论 -
MySQL -- 13 -- MySQL事务的四个特性以及四个隔离级别
事务是指作为单个逻辑工作单元执行的一系列操作,要么全部执行,要么全部不执行一、事务的四个特性 (ACID)原子性 (Atomic)事务包含的所有操作,要么全部执行,要么全部不执行一致性 (Consistency)事务应确保数据库的状态从一个一致状态转换到另一个一致状态如:拿转账来说,假设用户 A 和用户 B,两者的钱加起来一共是 2000 元,那么不管 A 和 B 之间如何转账,转几次账,事务结束后,两个用户的钱相加起来应该还为 2000 元,这就是事务的一致性隔原创 2020-08-20 21:54:22 · 236 阅读 · 0 评论 -
MySQL -- 12 -- MySQL存储引擎MyISAM和InnoDB在锁方面的区别(8.0)
我们知道 MyISAM 默认使用表级锁,不支持行级锁;InnoDB 默认使用行级锁,同时也支持表级锁,这里让我们来看看 MyISAM 和 InnoDB 在锁方面的具体区别一、创建测试数据生成思路利用 MySQL 内存表插入快的特点,可以先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中这里我们来生成两张具有 100w 条数据的学生信息表,两张表除了存储引擎不一样 (一张为 InnoDB,一张为 MyISAM),其余都一样如果要生成大量数据,需要提前在 MySQ原创 2020-08-20 17:31:24 · 233 阅读 · 0 评论 -
MySQL -- 11 -- MySQL存储引擎MyISAM和InnoDB之间的区别(8.0)
在 MySQL5.5 版本之前,MyISAM 是 MySQL 的默认存储引擎;从 MySQL5.5 版本开始,InnoDB 是 MySQL 的默认存储引擎官方文档:Introduction to InnoDB官方文档:The MyISAM Storage Engine一、MyISAM 存储引擎特性如上所示,共有以下特性支持 B 树索引支持备份或时间点恢复需要在服务器中实现,而不是在存储引擎中实现不支持集群数据库不支持聚集索引支持压缩数据仅当使原创 2020-08-20 15:50:24 · 397 阅读 · 0 评论 -
MySQL -- 10 -- MySQL联合索引最左匹配原则
一、联合索引联合索引又称复合索引,是指由多个字段组成的索引二、最左匹配原则最左匹配原则,MySQL 会一直向右匹配,如果遇到范围查询 (>、<、between、and) 就会停止匹配,如:a = 1 and b = 2 and c > 3 and d = 4,如果建立 (a, b, c, d) 顺序的联合索引,那么 d 就使用不了联合索引了;如果建立 (a, b, d, c) 顺序的联合索引,则都可以用的到,a、b、d 的顺序可以任意调整= 和 in 可以乱序,比如:原创 2020-08-20 15:42:07 · 238 阅读 · 0 评论 -
MySQL -- 09 -- MySQL调优之explain工具(8.0)
官方文档:EXPLAIN Output Format使用 explain 可以模拟优化器执行 SQL 语句,从而知道 MySQL 是如何处理 SQL 语句、如何分析查询语句、如何分析表结构的性能瓶颈表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行数据被优化器查询此外,除了 select 语句,其他如:insert、update、delete、replace 等语句也可以使用 explain 来查询执行计划一、.原创 2020-08-20 13:17:26 · 380 阅读 · 0 评论 -
MySQL -- 08 -- MySQL调优之慢查询日志(8.0)
官方文档:The Slow Query Log官方文档:mysqldumpslow慢查询日志是 MySQL 提供的一种日志记录,用于记录查询时间超过 long_query_time 的 SQL,并且还要对 min_examined_row_limit 进行校验 (若扫描行数小于该参数,则不会记录到慢查询日志中)慢查询日志可用于查找执行时间较长的查询,用于 SQL 优化,默认不开启,需要我们通过 slow_query_log 来手动设置此外慢查询日志不仅支持将日志记录写入文件中,也支持将日志.原创 2020-08-20 09:45:58 · 1297 阅读 · 0 评论 -
MySQL -- 07 -- MySQL聚集索引和非聚集索引的区别
官方文档:Clustered and Secondary Indexes一、聚集索引聚集索引,又称聚簇索引,该索引中键值的逻辑顺序与数据行的物理顺序相同,每个表 (InnoDB) 只能有一个聚集索引聚集索引的选取规则如下如果存在主键,则选取该主键索引作为聚集索引如果不存在主键,则选取该表的第一个唯一非空索引作为聚集索引如果既不存在主键,也不存在合适的唯一键,则 InnoDB 会在内部生成一个隐藏的主键,并选取该主键索引作为聚集索引在 InnoDB 中,聚集索引.原创 2020-08-20 09:45:11 · 605 阅读 · 0 评论 -
MySQL -- 06 -- MySQL索引优化
一、运用二叉查找树二叉查找树 (Binary Search Tree),又称二叉排序树 (Binary Sort Tree),亦称二叉搜索树,是数据结构中的一类,在一般情况下,查询效率要比链表结构要高二叉查找树定义1、二叉查找树的每个节点最多有两个子树,称为左子树和右子树2、若左子树不为空,则左子树上所有节点的值均小于它的根节点的值3、若右子树不为空,则右子树上所有节点的值均大于它的根节点的值二叉查找树使用二分法进行查找,因为是对半搜索,所以其时间复杂度为 O(log原创 2020-08-19 09:50:33 · 270 阅读 · 0 评论 -
MySQL -- 05 -- 如何设计一个关系型数据库
关系数据库管理系统 (Relational Database Management System:RDBMS) 是指包括相互联系的逻辑组织和存取这些数据的一套程序 (数据库管理系统软件)。关系数据库管理系统就是管理关系数据库,并将数据逻辑组织起来的系统一、模块划分数据库最主要的功能就是存储我们的数据,因此它会有一个存储模块来存储我们的数据,存储模块就类似于我们的 OS 文件系统,将数据最终持久化存入磁盘中,如:机械硬盘、SSD 固态硬盘可是光有存储是不行的,我们还需要组织并用到这些数据,原创 2020-08-18 16:46:26 · 472 阅读 · 0 评论 -
MySQL -- 04 -- 解决Access denied for user root@localhost
当我们在服务器上使用 MySQL,使用 mysql -uroot -p 进行登陆时,有时候会碰到以下错误,踩个坑记录下解决方法一、跳过密码验证vim /etc/my.cnfskip-grant-tables (在任意空白行加上即可):wqsystemctl restart mysql二、无密码登陆mysql -urootMySQL5.7 版本u...原创 2019-06-22 17:46:52 · 490 阅读 · 0 评论 -
MySQL -- 03 -- 配置MySQL开机自启
一、编辑 mysql.service 文件vim /lib/systemd/system/mysql.service[Unit]Description=The MySQL serverAfter=syslog.target network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecSta...原创 2019-06-21 17:13:17 · 613 阅读 · 0 评论 -
MySQL -- 02 -- Linux上源码包安装MySQL(8.0)
之前使用的 MySQL 都是 5.7 的版本,最近公司要将 MySQL 升级到8.0,于是我尝试着用安装 5.7 的方法来安装 8.0,结果就是各种报错,折腾了好久才搞定,现在抽空整理了一下,一方面是加深自己的印象,另一方面是希望能够帮助到有疑惑的小伙伴们官方安装文档 --> 2.9.2 Installing MySQL Using a Standard Source Distribu...原创 2019-06-20 10:47:47 · 689 阅读 · 0 评论 -
MySQL -- 01 -- Linux上源码包安装MySQL(5.7)
之前在服务器上安装 MySQL,总是能碰到各种各样的问题导致安装失败,没有深入去研究,最近根据官方文档,还有在公司运维的帮助下,终于安装成功了,按照总结出来的步骤重复安装了三四次,都没什么问题,以下是我的总结步骤官方安装文档 --> 2.9.2 Installing MySQL Using a Standard Source Distribution官方配置文档 --> 2...原创 2019-06-11 11:16:44 · 298 阅读 · 0 评论