
精通mysql数据库
文章平均质量分 87
MySQL 是一款安全、跨平台、高效的,并与 Java 等主流编程语言紧密结合的数据库系统。
会飞的IT蜗牛
当你的才华撑不起你的野心时,你就应该静下心来学习
展开
-
mysql底层数据存储原理
mysql数据存储原理原创 2023-01-18 11:00:14 · 1126 阅读 · 0 评论 -
二十、数据库的高可用是怎么实现的?
高可用,即High Availability,是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。单机部署谈不上高可用,因为单点故障问题。高可用都是多个节点的,我们在考虑MySQL数据库的高可用的架构时,需要考虑这几个方面:如果数据库节点宕机,需要尽快回复,保证业务不受宕机影响。 从数据库节点的数据,尽可能跟主节点数据实时保持一致,至少保证最终一致性。 数据库节点切换时,数据不能缺失。1.1 主从或主主半同步复制用双节点数据库,搭建单向或者双向的半同步复制原创 2022-03-12 07:49:26 · 1852 阅读 · 0 评论 -
十九、MySQL 用 limit 为什么会影响性能?
灌入大量数据,共500万:我们知道,当limit offset rows中的offset很大时,会出现效率问题,mysql> select * from test where val=4 limit 300000,5;+---------+-----+--------+---------+| id | val | source | id |+---------+-----+--------+---------+| 3327622 | 4 | 4 | 33原创 2022-03-11 06:49:46 · 897 阅读 · 0 评论 -
十八、mysql的执行计划
MySQL Explain详解查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看-- 实际SQL,查找用户名为Jefabc的员工select * from emp where name = 'Jefabc';-- 查看SQL是否使用索引,前面加上explain即可explain select * from emp where name = 'Jefabc';expain出来的信息有10列,分别是id、select_type、table、t.原创 2022-03-11 06:45:16 · 133 阅读 · 0 评论 -
十七、mysql并发访问核心机制-MVCC
一、什么是MVCCMVCC:全称Multi-Version Concurrency Control,多版本并发控制,MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。InnoDB通过为每一行记录添加两个额外的隐藏的值来实现MVCC,这两个值一个记录这行数据何时被创建,另外一个记录这行数据何时过期(或者被删除)。但是InnoDB并不存储这些事件发生时的实际时间,相反它...原创 2022-03-11 06:40:28 · 273 阅读 · 0 评论 -
十六、mysql索引的实现原理和数据结构
B-Tree叶节点具有相同的深度,叶节点的指针为空 所有索引元素不重复 节点中的数据索引从左到右递增排序就这样的一个结构。也就是说在一个节点上可以存储更多的元素,k-v,key就是索引字段,data就是索引字段所在的那一行的数据或是那一行数据坐在的的磁盘文件地址、指针,再去查找元素的时候一次性不是Load一个小元素,而是把一个大的节点的数据一次性全部load到内存,然后再在内存里再去比对,在内存里操作是比较快的。如果我们要查找49这个元素,实际上是从根节...原创 2022-03-11 06:34:14 · 1272 阅读 · 0 评论 -
十五、MySQL主从复制原理
一、为什么要做主从复制在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运行。 做数据的热备,主库宕机后能够及时替换主库,保证业务可用性。 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。二、MySQL主从复制的流程主库db的更新事件(upda原创 2022-03-11 06:25:40 · 166 阅读 · 0 评论 -
五、MySQL中有六种日志文件
一、MySQL中有六种日志文件重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log)中继日志(relay log)其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。1.1 重做日志(redo log)作用: 1....原创 2022-03-11 06:19:55 · 1634 阅读 · 0 评论 -
一、SQL语句执行过程
一、MySQL架构图MySQL逻辑架构图,可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 In...原创 2022-03-11 06:20:22 · 4501 阅读 · 0 评论 -
四、MySql中explain的时候出现Using where; Using index; Using temporary; Using filesort
通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort一、using filesort在使用order by关键字的时候,如果待排序的内容不能由所使用的索引直接完成排序的话,那么mysql有可能就要进行文件排序。【这个 filesort 并不是说通过磁盘文件进行排序,而只是告诉我们进行了一个排序操作而已】。此时,可以进行的优化:...原创 2022-03-11 06:20:46 · 22376 阅读 · 3 评论 -
三、mysql磁盘管理:mysql数据是怎么组织的?
一、InndoDB 逻辑存储结构我们建一张tb_user表,就会生成一个名为tb_user.ibd的表空间文件为了保证顺序IO,表空间被划分为多个连续的数据区,256个连续的数据区称为一个数据区组,一个数据区又由64个连续的数据页组成,数据页包含数据行。一个数据页大小为 16 KB一个数据区大小为 64 * 16 KB = 1 MB一个数据区组大小为 256 * 1 MB = 256 MB在 InnoDB 中有个参数 innodb_f...原创 2022-03-11 06:21:16 · 711 阅读 · 0 评论 -
MySQL如何解决脏读、不可重复读、幻读?底层原理?
一、数据库隔离级别四种隔离级别:读未提交,读已提交,可重复读,串行化脏读,不可重复读,幻读二、数据库两种锁1.共享锁,又称S锁、读锁,事务A对一个资源加了S锁后其他事务仍能共享读该资源,但不能对其进行写,直到A释放锁为止。2.排它锁,又称X锁、写锁,事务A对一个资源加了X锁后只有A本身能对该资源进行读和写操作,其他事务对该资源的读和写操作都将被阻塞,直到A释放锁为止。三、四种隔离级别都解决了什么问题?具体怎么解决的?3....原创 2015-08-21 10:49:39 · 1236 阅读 · 0 评论