MySQL
文章平均质量分 60
MySQL
小明的笔记仓库
转载笔记来自互联网资料整理。
仅供个人学习用途。
展开
-
《MySQL 是怎样运行的:从根儿上理解 MySQL 》优质笔记
https://blog.csdn.net/qq_31941921/article/details/121775387MySQL里的锁_小明的笔记仓库的博客-CSDN博客原创 2022-04-20 09:10:29 · 623 阅读 · 0 评论 -
MySQL45讲——知识框架
http://naotu.baidu.com/file/6b48b7f883875cd59eecf8389a3a123a?token=40459123ea6970a5#### 索引相关* 04 | 深入浅出索引(上)* 05 | 深入浅出索引(下)* 09 | 普通索引和唯一索引,应该怎么选择?* 10 | MySQL为什么有时候会选错索引?* 11 | 怎么给字符串字段加索引?* 15 | 答疑文章(一):日志和索引相关问题* 16 | “order by”是怎么工作的?* 18 |原创 2021-09-26 17:11:01 · 159 阅读 · 0 评论 -
mysql忘记密码解决办法
方法1: 用SET PASSWORD命令首先登录MySQL。格式:mysql> set password for 用户名@localhost = password('新密码');例子:mysql> set password for root@localhost = password('123');方法2:用mysqladmin格式:mysqladmin -u用户名 -p旧密码 password 新密码例子:mysqladmin -uroot -p123456 passw...原创 2021-08-27 10:43:38 · 428 阅读 · 0 评论 -
带你读Mysql技术内幕[2]——InnoDB引擎概述
本文是自己的阅读《Mysql技术内幕——InnoDB存储引擎》的笔记,主要是为了将阅读和实践结合起来,途中会穿插自己的理解及自己工作中的实践。 文章目录 1. InnoDB存储引擎概述2. InnoDB体系结构2.3.1 后台线程2.3.2 内存1. 缓冲池(buffer p...转载 2021-08-29 10:32:48 · 243 阅读 · 0 评论 -
带你读Mysql技术内幕[3]——你所不知道的Mysql文件
前言:本文是自己的阅读《Mysql技术内幕——InnoDB存储引擎》的笔记,主要是为了将阅读和实践结合起来,途中会穿插自己的理解及自己工作中的实践。我理解阅读一本经典的书,无论是技术书籍还是生活数据,带着目的去读,知道书讲得是什么,并且结合自己的理解,输出一定的文字。 文章目录...转载 2021-08-29 10:38:13 · 181 阅读 · 0 评论 -
带你读Mysql技术内幕[4]——什么是表
前言:本文是自己的阅读《Mysql技术内幕——InnoDB存储引擎》的笔记,主要是为了将阅读和实践结合起来,途中会穿插自己的理解及自己工作中的实践。我理解阅读一本经典的书,无论是技术书籍还是生活数据,带着目的去读,知道书讲得是什么,并且结合自己的理解,输出一定的文字。 本篇文章主要...转载 2021-08-29 10:40:06 · 145 阅读 · 0 评论 -
带你读Mysql技术内幕[5]——什么是索引
前言:本文是自己的阅读《Mysql技术内幕——InnoDB存储引擎》的笔记,主要是为了将阅读和实践结合起来,途中会穿插自己的理解及自己工作中的实践。我理解阅读一本经典的书,无论是技术书籍还是生活数据,带着目的去读,知道书讲得是什么,并且结合自己的理解,输出一定的文字。 经常在...转载 2021-08-29 10:40:48 · 184 阅读 · 0 评论 -
带你读Mysql技术内幕[6]——什么是锁及锁相关问题
文章目录 1. 什么是锁2. Lock和latch区别3. Innodb存储引擎中的锁1. 锁的类型2. 如何分析数据库的锁3. MVCC4. 一致性锁定读 4. 锁的算法2. 如何解决Phantom Problem(本质上等同于不同重复读问题) 5. 锁的问题(...转载 2021-08-29 10:41:25 · 165 阅读 · 0 评论 -
事务--如何避免长事务对业务的影响?
如何避免长事务对业务的影响?首先,从应用开发端来看: 确认是否使用了 set autocommit=0。这个确认工作可以在测试环境中开展,把 MySQL 的 general_log 开起来,然后随便跑一个业务逻辑,通过 general_log 的日志来确认。一般框架如果会设置这个值,也就会提供参数来控制行为,你的目标就是把它改成 1。 确认是否有不必要的只读事务。有些框架会习惯不管什么语句先用 begin/commit 框起来。我见过有些是业务并没有这个需要,但是也把好几个 sele..原创 2021-09-12 09:23:10 · 305 阅读 · 0 评论 -
行锁:怎么减少行锁对性能的影响?
行锁就是针对数据表中行记录的锁。这很好理解,比如事务 A 更新了一行,而这时候事务 B 也要更新同一行,则必须等事务 A 的操作完成后才能进行更新。当然,数据库中还有一些没那么一目了然的概念和设计,这些概念如果理解和使用不当,容易导致程序出现非预期行为,比如两阶段锁。从两阶段锁说起我先给你举个例子。在下面的操作序列中,事务 B 的 update 语句执行时会是什么现象呢?假设字段 id 是表 t 的主键。这个问题的结论取决于事务 A 在执行完两条 update 语句后,持有哪些锁,以及在什么转载 2021-09-17 19:26:03 · 470 阅读 · 0 评论 -
日志相关问题
日志相关问题我在第 2 篇文章《日志系统:一条 SQL 更新语句是如何执行的?》中,和你讲到 binlog(归档日志)和 redo log(重做日志)配合崩溃恢复的时候,用的是反证法,说明了如果没有两阶段提交,会导致 MySQL 出现主备数据不一致等问题。在这篇文章下面,很多同学在问,在两阶段提交的不同瞬间,MySQL 如果发生异常重启,是怎么保证数据完整性的?现在,我们就从这个问题开始吧。我再放一次两阶段提交的图,方便你学习下面的内容。图 1 两阶段提交示意图这里,我要先和你解转载 2021-09-18 20:37:05 · 160 阅读 · 0 评论 -
SQL语句优化
为什么这些SQL语句逻辑相同,性能却差异巨大?案例一:条件字段函数操作假设你现在维护了一个交易系统,其中交易记录表 tradelog 包含交易流水号(tradeid)、交易员 id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下: mysql> CREATE TABLE `tradelog` ( `id` int(11) NOT NULL, `t原创 2021-09-19 20:36:49 · 265 阅读 · 0 评论 -
MySQL是怎么保证数据不丢的?
得到的结论是:只要 redo log 和 binlog 保证持久化到磁盘,就能确保 MySQL 异常重启后,数据可以恢复。评论区有同学又继续追问,redo log 的写入流程是怎么样的,如何保证 redo log 真实地写入了磁盘。那么今天,我们就再一起看看 MySQL 写入 binlog 和 redo log 的流程。binlog 的写入机制其实,binlog 的写入逻辑比较简单:事务执行过程中,先把日志写到 binlog cache,事务提交的时候,再把 binlog cache 写到 bi转载 2021-09-24 20:41:33 · 197 阅读 · 0 评论 -
MySQL优质参考资料、
文档1.MySQL官方文档:https://dev.mysql.com/doc/refman/5.7/en/ MySQL官方文档是写作本书时参考最多的一个资料。说实话,文档写的非常通俗易懂,唯一的缺点就是太长了,导致大家看的时候无从下手。2.MySQL Internals Manual:https://dev.mysql.com/doc/internals/en/ 介绍MySQL如何实现各种功能的文档,写的比较好,但是太少了,有很多章节直接跳过了。 何登成的github:http转载 2021-11-15 20:46:40 · 312 阅读 · 0 评论 -
说过的话就一定要办到——redo日志(上)
标签: MySQL是怎样运行的事先说明本文以及接下来的几篇文章将会频繁的使用到我们前边唠叨的InnoDB记录行格式、页面格式、索引原理、表空间的组成等各种基础知识,如果大家对这些东西理解的不透彻,那么阅读下边的文字可能会有些吃力,为保证您的阅读体验,请确保自己已经掌握了我前边唠叨的这些知识。redo日志是个啥我们知道InnoDB存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面(包括读页面、写页面、创建新页面等操作)。我们前边唠叨Buffer Pool的时候转载 2021-11-30 16:25:10 · 234 阅读 · 0 评论 -
说过的话就一定要办到——redo日志(下)
redo日志文件redo日志刷盘时机我们前边说mtr运行过程中产生的一组redo日志在mtr结束时会被复制到log buffer中,可是这些日志总在内存里呆着也不是个办法,在一些情况下它们会被刷新到磁盘里,比如: log buffer空间不足时 log buffer的大小是有限的(通过系统变量innodb_log_buffer_size指定),如果不停的往这个有限大小的log buffer里塞入日志,很快它就会被填满。设计InnoD.转载 2021-12-02 11:38:42 · 492 阅读 · 0 评论 -
【数据库mysql命令】思维导图总结
转载 2021-12-18 22:07:10 · 211 阅读 · 0 评论 -
Go语言操作MySQL
Go语言中的包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用包时必须注入(至少)一个数据库驱动。我们常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动使用MySQL驱动Open打开一个dirverName指定的数据库,dataSourceName指定数据源,一般至少包括数据库文件名和其它连接必要的信息。思考题: 为什么上面代码中的语句不应该写在的前面呢?Open函数可能只是验证其参数格式是否正确,实际上并不创建与数据库的连接。如果要检查数据源的名称转载 2022-06-07 12:47:51 · 292 阅读 · 0 评论