![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 79
郝开
你可以是一本打开的书,但我要比那复杂一点。
展开
-
根据服务器系统选择对应的MySQL版本
MySQL有多个版本,选择对应的版本,重点信息是Linux的GLIBC版本号,Linux的版本、系统位数。原创 2024-03-14 17:40:26 · 666 阅读 · 0 评论 -
MySQL6:索引使用原则,联合索引,联合主键/复合主键,覆盖索引、什么是回表?索引条件下推,索引的创建与使用,索引的创建与使用,索引失效
回表:非主键索引,我们先通过索引找到主键索引的键值,再通过主键值查出索引里面没有的数据,它比基于主键索引的查询多扫描了一棵索引树,这个过程就叫回表。当我们用name索引查询一条记录,它会在二级索引的叶子节点找到name=Susan,拿到主键值,也就是id = 3,然后再到主键索引的叶子节点拿到数据。覆盖索引:在二级索引里面,不管是单列索引还是联合索引,如果select的数据列只用从索引中就能够取得,不必从数据区中读取,这时候使用的索引就叫做覆盖索索引,这样就避免了回表。。比如上图。原创 2023-10-29 23:15:09 · 3727 阅读 · 0 评论 -
MySQL5:MySQL数据存储文件;MylSAM中索引和数据是两个独立的文件,它是如何通过索引找到数据呢?聚集索引/聚簇索引,InnoDB中二级索引为什么不存地址而是存键值?row ID如何理解?
MylSAM中索引和数据是两个独立的文件,它是如何通过索引找到数据呢?MylSAM的B+Tree里面,叶子节点存储的是数据文件对应的磁盘地址。所以从索引文件.MYI中找到键值后,会到数据文件.MYD中获取相应的数据记录。在MylSAM里面,其他的索引也在这个.MYI文件里面。 非主键索引跟主键索引存储和检索数据的方式是没有任何区别的,没有主次之分,二者都是在索引文件里面找到磁盘地址,然后到数据文件里面获取数据。原创 2023-10-26 23:23:43 · 543 阅读 · 0 评论 -
MySQL4:索引是什么;索引类型;索引存储模型发展:1.二分查找,2.二叉查找树,3.平衡二叉树,4.多路平衡查找树,5. B+树,6.索引为什么不用红黑树?7.InnoDB的hash索引指什么?
数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、 更新数据库表中数据。数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,我们要从500万行数据里面检索一条数据,只能依次遍历这张表的全部数据, 直到找到这条数据。但是我们有了索引之后,只需要在索引里面去检索这条数据就行了,它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的磁盘地址以后,就可以拿到数据了。原创 2023-10-26 13:22:22 · 316 阅读 · 0 评论 -
MySQL3:MySQL中一条更新SQL是如何执行的?
redo log的大小是固定的,所谓大小固定是指,它的结构是一个环状的,当新的内容写满了,会覆盖旧的内容,这个就是大小固定的意思。它可以通过参数来设置它的文件个数,可以通过来指定每个redo log文件的大小,默认是两个文件,你设置成4就是4个文件。所以在不断写的过程中,也需要不断地清理redo log的内容,如果一致不清理,那么当当前写的位置赶上了上一个清理的检查点的位置,那么就会触发buffer pool里面的内容刷盘。内存缓冲区对于提升读写性能有很大的作用。原创 2023-10-25 15:00:35 · 631 阅读 · 0 评论 -
MySQL2:MySQL中一条查询SQL是如何执行的?
得到解析树之后,是不是执行SQL语句了呢?这里我们有一个问题,一条SQL语句是不是只有一种执行方式?或者说数据库最终 执行的SQL是不是就是我们发送的SQL?这个答案是否定的。一条SQL语句是可以有很多种执行方式的,最终返回相同的结果,他们是等价的。比如索引有好几个,那么最终选择哪一个索引;或者是多张表进行关联查询的时候,使用哪个表作为基准表,以及其它的语法方面的一些优化等。有多种执行方式,这些执行方式怎么得到的?最终选择哪一种去执行?根据什么判断标准去选择?原创 2023-10-25 15:00:25 · 546 阅读 · 0 评论 -
MySQL1:MySQL发展史,MySQL流行分支及其对应存储引擎
Percona Server是MySQL重要的分支之一,它基于InnoDB存储引擎的基础上,提升了性能和易管理性,最后形成了增强版的XtraDB存储引擎,可以用来更好地发挥服务器硬件上的性能。心MySQL数据库发展的未来(开发缓慢,封闭,可能会被闭源),就创建了一个分支MariaDB (2009年),默认使用全新的Maria存储引擎,它是原MylSAM存储引擎的。国内也有一些MySQL的分支或者自研的存储引擎,比如网易的InnoSQL,极数云舟的ArkDB。这个就涉及到MySQL的整体架构和工作流程了。原创 2023-10-23 14:28:15 · 217 阅读 · 1 评论 -
MySQL官方文档如何查看,MySQL中文文档
MySQL官方文档如何查看,MySQL中文文档原创 2023-10-19 12:07:13 · 477 阅读 · 0 评论 -
数据库设计的酸(ACID)碱(BASE)原则
大概是翻译的问题,将这里的Basically翻译成了“基本的”,更接近本意的解释大概是“根本上”。ACID是关系型数据库的事务执行过程中,为了保证数据被可靠写入而必须遵循的原则。事务之间互不干扰,一个事务看不到另一事务执行中途的数据变更,也无法与另一事务交互。事务是作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务结束后,所作变更将写入数据库,不再被回滚,即使数据库宕机重启。允许因延时等出现临时的数据不一致现象,只要数据最终是一致的就可以。数据库最基本的要求是可用性。......原创 2022-07-29 15:45:51 · 470 阅读 · 0 评论 -
MySQL慢查询语句
MySQL慢查询慢查询二级目录慢查询日志分析慢查询-- 查看查询相关变量show global variables like '%quer%';二级目录慢查询日志分析Time:慢查询发生的时间Query_time:查询时间Lock_time:等待锁表的时间Rows_sent:语句返回的行数Rows_exanined:语句执行期间从存储引擎读取的行数上面这种方式是用系统自带的慢查询日志查看的,如果觉得系统自带的慢查询日志不方便查看,可以使用pt-query-digest或者mysql原创 2022-01-14 21:42:09 · 1364 阅读 · 0 评论 -
Docker:docker安装MySQL并同步数据到本机
Docker:docker安装MySQL并同步数据到本机先了解MySQL启动方式拉取MySQL镜像MySQL数据持久化到本地查看目录挂载情况Mounts信息本机目录查看数据持久化MySQL环境变量:Environment Variables先了解MySQL启动方式MySQL启动是要设置密码的,因此去官方查看启动命令。MySQL dockerhub地址:https://registry.hub.docker.com/_/mysql# 管帆帆测试运行命令$ docker run --name some原创 2022-01-10 09:15:00 · 801 阅读 · 0 评论 -
mysqldump导数据
mysqldump导数据摘要注意只导出数据对于--set-gitd-purged=off的版本问题dump常用参数--default-character-set=utf8--single-transaction--skip-lock-tables--skip-extended-insert--complete-insert--compact摘要我们生产中要求编写sh脚本来执行数据dump。编写完mysqldump语句后,改文件后缀为.sh之后,就可以通过 sh xxx.sh的命令在linux上面运行,原创 2021-11-02 17:36:52 · 848 阅读 · 0 评论 -
存储过程写入数据、存储过程分割字符串、存储过程事务、MySQL存储过程的查询、MySQL测试用户数据批量生成id保证多次执行存储过程不会重复
MySQL存储过程生成用户数据,表video_user_info字段有id,name,salt,password,email,create_time,update_time,id类型为bigint固定17位有序,id保证多次执行存储过程不会重复,salt固定使用 16 个字符的随机字符串,password长度为8-12位的随机字符串,提供可执行脚本,可选每次commit的数据量。**查看,是on时就是会自动提交,是off时,不会自动提交,需要手动commit。2、mysql存储过程是否需要commit;原创 2021-10-14 11:25:58 · 437 阅读 · 1 评论