吃透Java
专注Java技术,每天都要努力一点点
展开
-
吃透MySQL(十四):主从延时问题
mysql的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高,slave的sql thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随机的,不是顺序,所以成本要高很多,另一方面,由于sql thread也是单线程的,当主库的并发较高时,产生的DML数量超过slave的SQL thread所能处理的速度,或者当slave中有大型query语句产生了锁等待,那么延时就产生了。所谓的主备延迟就是同一个事务原创 2022-07-04 09:48:23 · 221 阅读 · 0 评论 -
吃透MySQL(十三):主从复制原理详细介绍
1、为什么需要主从复制?1、在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。2、做数据的热备3、架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。2、什么是mysql的主从复制? MySQL 主从复制是指数据可以从一个MySQL数据库服务器主原创 2021-03-18 19:46:56 · 298 阅读 · 0 评论 -
吃透MySQL(十二):InnoDB关键特性详细介绍
InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻近页(Flush Neighbor Page)上述这些特性为InnoDB存储引擎带来更好的性能以及更高的可靠性。一,插入缓冲1,Insert Buffer在InnoDB存储引擎中,主键是唯一的标识符。通常应用程序中行记录的插入顺序是按照主键递增的顺序进行插入的。因此,插入主键索引(Prima原创 2021-03-08 08:57:16 · 336 阅读 · 2 评论 -
吃透MySQL(十一):undolog redolog binlog原理详细介绍
一,Undo logUndo:意为取消,以撤销操作为目的,返回指定某个状态的操作。Undo Log:数据库事务提交之前,会将事务修改数据的镜像(即修改前的旧版本)存放到 undo 日志里,当事务回滚时,或者数据库奔溃时,可以利用 undo 日志,即旧版本数据,撤销未提交事务对数据库产生的影响。。对于 insert 操作,undo 日志记录新数据的 PK(ROW_ID),回滚时直接删除;对于 delete/update 操作,undo 日志记录旧数据 row,回滚时直接恢复;他们分别存.原创 2021-03-06 12:10:46 · 6124 阅读 · 15 评论 -
吃透MySQL(十):缓冲池(buffer pool)原理详细介绍
一,InnoDB的缓冲池操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。缓冲池是缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。速度快,那为啥不把所有数据都放到缓冲池里?凡事都具备两面性,抛开数据易失性不说,访问快速的反面是存储容量小:(1)缓存访问快,但容量小,数据库存储了200G数据,缓存容量可能原创 2021-03-05 11:04:04 · 1050 阅读 · 1 评论 -
吃透MySQL(九):MVCC多版本并发控制原理
1、MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。2、当前读 像select lock in share mode(共享锁), select for update ; up原创 2021-03-04 10:07:19 · 1960 阅读 · 1 评论 -
吃透MySQL(八):锁机制原理详细介绍
文章目录一,MySQL锁的基本介绍二,表锁1,分类2,使用3,表锁使用示例3.1,读阻塞写案例3.2,写阻塞读案例4,意向共享锁(Intention Shared Locks)& 意向排它锁(Intention Exclusive Locks)三,行锁1,分类2,行锁加锁过程3,使用4,行锁到底锁了什么5,行锁使用案例5.1,在不通过索引条件查询的时候,innodb使用的是表锁而不是行锁5.2,创建带索引的表进行条件查询,innodb使用的是行锁5.3,由于mysql的行锁是针对索引加的锁,不是针对原创 2021-02-05 09:12:57 · 329 阅读 · 2 评论 -
吃透MySQL(七):MySQL执行计划详细介绍
一,语法在企业的应用场景中,为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。官网地址: https://dev.mysql.com/doc/refman/5.5/en/explain-output.html1,explain可以使用explain+SQL语句来模拟优化器执行SQL查询语句,从而知道mysql是如何处理sql语句的。EXPLAIN 是解释 SQL 语句的执行计划,即显示该 SQL 语句怎么执行的。EXPLAIN语法如下:{EXPLAIN原创 2021-02-04 17:25:41 · 237 阅读 · 2 评论 -
吃透MySQL(六):事务详细介绍
一,什么是事物数据库中的事务是指对数据库执行一批操作,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。举个例子比如A用户给B用户转账100操作,过程如下:从A账户扣100给B账户加100如果在事务的支持下,上面最终只有2种结果:操作成功:A账户减少100;B账户增加100。操作失败:A、B两个账户都没有发生变化。如果没有事务的支持,可能出现错:A账户减少了100,此时系统挂了,导致B账户没有加上100,而A账户凭空少了100。二,事物的几个特性(ACID)原创 2021-02-03 09:57:48 · 209 阅读 · 1 评论 -
吃透MySQL(五):索引的使用详细介绍
通常说的这个查询走索引了是什么意思?当我们对某个字段的值进行某种检索的时候,如果这个检索过程中,我们能够快速定位到目标数据所在的页,有效的降低页的io操作,而不需要去扫描所有的数据页的时候,我们认为这种情况能够有效的利用索引,也称这个检索可以走索引,如果这个过程中不能够确定数据在那些页中,我们认为这种情况下索引对这个查询是无效的,此查询不走索引。一,索引简单使用分为聚集索引和非聚集索引,前面已经介绍过,这里不再介绍!非聚集索引又分为:单列索引:即一个索引只包含一个列。多列索引(又称复合索原创 2021-02-01 14:13:51 · 239 阅读 · 2 评论 -
吃透MySQL(四):索引原理详细介绍
文章目录一,预备知识1,磁盘中数据的存取1.1,扇区1.2,磁盘块1.3,磁盘读取数据2,mysql中的页3,数据检索过程二,索引为什么采用B+Tree1,循环遍历查找2,二分查找3,有序数组4,链表5,二叉搜索树6,平衡二叉树(AVL树)7,B树(B-Tree)8,B+Tree三,MySQL的存储引擎和索引1,InnoDB中的索引2,MyISAM引擎中的索引3,检索过程3.1,InnoDB数据检索过程:3.2,MyISAM数据检索过程四,页结构一,预备知识1,磁盘中数据的存取以机械硬盘来说,先了解几原创 2021-01-29 21:07:33 · 317 阅读 · 0 评论 -
吃透MySQL(三):MyISAM和InnoDB存储引擎详细介绍
一,MySQL基本架构MySQL基础架构可以分为两大类:Server层和存储引擎层。Server层: Server层涵盖了MySQL大部分核心业务功能,并且所有存储引擎的功能都在这一层实现。存储引擎层:存储引擎有很多,各自有着各自的特点,可以根据场景来选择不同的存储引擎来操作数据连接器:负责跟客户端建立连接,获取权限,维持和管理连接。包括用户名和密码的验证,查询权限信息,分配对应的权限,可以使用show processlist查看现在的连接,如果太长时间没有动静,就会自动断开,通过wait_原创 2021-01-28 20:25:33 · 1224 阅读 · 3 评论 -
吃透MySQL(二):JDBC原理及源码解析
文章目录一,JDBC使用二,JDBC原理1,JDBC基本原理2,Java SPI机制三,JDBC源码分析自JDBC4.0开始,Class.forName(""),可以省略掉了JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。一,JDBC使用首先依赖mysql驱动jar包:maven地址 public static void原创 2021-01-27 10:37:46 · 793 阅读 · 0 评论 -
吃透MySQL(一):安装及使用
一、MySQL下载地址https://dev.mysql.com/二、MySQL安装到这里MySql服务以及安装完成,接下来我们需要配置服务。1、选择在细节上进行配置:2、开发版3、选择多功能数据库4、默认端口33065、选择UTF-8字符集6、记得把MySql常用命令添加到window环境变量里面,方便我们用命令行来操作7、MySql的root权限用户名为ro...原创 2020-03-16 13:24:01 · 309 阅读 · 0 评论