跳至主要內容
一千行 MySQL 学习笔记

原文地址:https://shockerli.net/post/1000-line-mysql-note/ ,JavaGuide 对本文进行了简答排版,新增了目录。

非常不错的总结,强烈建议保存下来,需要的时候看一看。

基本操作

/* Windows服务 */
-- 启动 MySQL
			net start mysql
-- 创建Windows服务
				sc create mysql binPath= mysqld_bin_path(注意:等号与值之间有空格)
/* 连接与断开服务器 */
-- 连接 MySQL
				mysql -h 地址 -P 端口 -u 用户名 -p 密码
-- 显示哪些线程正在运行
				SHOW PROCESSLIST
-- 显示系统变量信息
				SHOW VARIABLES

JavaGuidePro大约 33 分钟数据库MySQL
SQL语句在MySQL中的执行过程

本文来自木木匠投稿。

本篇文章会分析下一个 SQL 语句在 MySQL 中的执行流程,包括 SQL 的查询在 MySQL 内部会怎么流转,SQL 语句的更新是怎么完成的。

在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成以及这些组件的作用是什么,可以帮助我们理解和解决这些问题。

一 MySQL 基础架构分析


JavaGuidePro大约 10 分钟数据库MySQL
InnoDB存储引擎对MVCC的实现

多版本并发控制 (Multi-Version Concurrency Control)

MVCC 是一种并发控制机制,用于在多个并发事务同时读写数据库时保持数据的一致性和隔离性。它是通过在每个数据行上维护多个版本的数据来实现的。当一个事务要对数据库中的数据进行修改时,MVCC 会为该事务创建一个数据快照,而不是直接修改实际的数据行。

1、读操作(SELECT):

当一个事务执行读操作时,它会使用快照读取。快照读取是基于事务开始时数据库中的状态创建的,因此事务不会读取其他事务尚未提交的修改。具体工作情况如下:

  • 对于读取操作,事务会查找符合条件的数据行,并选择符合其事务开始时间的数据版本进行读取。
  • 如果某个数据行有多个版本,事务会选择不晚于其开始时间的最新版本,确保事务只读取在它开始之前已经存在的数据。
  • 事务读取的是快照数据,因此其他并发事务对数据行的修改不会影响当前事务的读取操作。

JavaGuidePro大约 15 分钟数据库MySQL
MySQL高性能优化规范建议总结

作者: 听风 原文地址: https://www.cnblogs.com/huchong/p/10219318.html

JavaGuide 已获得作者授权,并对原文内容进行了完善补充。

数据库命名规范

  • 所有数据库对象名称必须使用小写字母并用下划线分割
  • 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)
  • 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符
  • 临时库表必须以 tmp_ 为前缀并以日期为后缀,备份表必须以 bak_ 为前缀并以日期 (时间戳) 为后缀
  • 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)

JavaGuidePro大约 19 分钟数据库MySQL
MySQL三大日志(binlog、redo log和undo log)详解

本文来自公号程序猿阿星投稿,JavaGuide 对其做了补充完善。

前言

MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志 binlog(归档日志)和事务日志 redo log(重做日志)和 undo log(回滚日志)。


JavaGuidePro大约 16 分钟数据库MySQL
MySQL查询缓存详解

缓存是一个有效且实用的系统性能优化的手段,不论是操作系统还是各种软件和网站或多或少都用到了缓存。

然而,有经验的 DBA 都建议生产环境中把 MySQL 自带的 Query Cache(查询缓存)给关掉。而且,从 MySQL 5.7.20 开始,就已经默认弃用查询缓存了。在 MySQL 8.0 及之后,更是直接删除了查询缓存的功能。

这又是为什么呢?查询缓存真就这么鸡肋么?

带着如下几个问题,我们正式进入本文。

  • MySQL 查询缓存是什么?适用范围?
  • MySQL 缓存规则是什么?
  • MySQL 缓存的优缺点是什么?
  • MySQL 缓存对性能有什么影响?

JavaGuidePro大约 11 分钟数据库MySQL
2