
MySQL数据库
文章平均质量分 83
季风泯灭的季节
资深JAVA/人工智能专家,阿里云专家博主。拥有近十年的技术研发和项目管理经验,擅长分布式、高并发、高可用架构设计。曾在多家知名科技公司担任技术经理和架构师,专注于JAVA、Python和AI大模型的研究与应用,致力于推动JAVA、人工智能等技术的发展与应用。
展开
-
《Mysql精通》-- mysql的锁机制实现原理
innodb中有行锁、间隙锁、表锁。行锁加锁时先以表id+索引id+主键为key,定位到全局锁哈希表中的一个桶,然后遍历这个桶中的所有整个链表,如果找到有冲突的锁记录则进入锁等待,阻塞当前事务。表锁加锁时先以表id为key,定位到全局锁哈希表中的一个桶,然后遍历这个桶中的所有整个链表,如果找到有冲突的表锁记录则进入锁等待,阻塞当前事务。如果没有找到,则遍历全局锁哈希表中的所有记录,来判断是有锁冲突,如果有也会进入锁等待,如果没有则生成行锁对象,存于全局锁哈希表的对应位置中。不同锁的锁对象结构上的差别。原创 2023-04-25 20:15:34 · 9552 阅读 · 0 评论 -
mysql导库
mysql原创 2022-09-01 18:20:31 · 49 阅读 · 0 评论 -
《Mysql精通》-- InnoDB 引擎底层事务的原理
MySQL 中事务的原子性是通过 undo log 来实现的,事务的持久性是通过 redo log 来实现的,事务的隔离性是通过读写锁+MVCC 来实现的。事务的一致性通过原子性、隔离性、持久性来保证。也就是说 ACID 四大特 性之中,C(一致性)是目的,A(原子性)、I(隔离性)、D(持久性)是手段,是为了保 证一致性,数据库提供的手段。数据库必须要实现 AID 三大特性,才有可能实现 一致性。同时一致性也需要应用程序的支持,应用程序在事务里故意写出违反约 束的代码,一致性还是无法保证的,...原创 2022-05-12 23:12:27 · 9501 阅读 · 0 评论 -
《Mysql进阶》-- Mysql数据库设计规范和技巧
1. 数据库设计的目的有效的存储高效的操作2. 数据库设计的四个步骤2.1 需求分析了解数据的属性,有哪些字段,主键的可选项 了解数据之间的对应关系,一对一、一对多、多对多 了解数据的生命周期,是临时存储、是永久存储、还是定期归档2.2 逻辑设计2.2.1逻辑设计失败会导致的问题: 插入异常:如果某个实体随着另一个实体的存在而存在,即缺少某个实体无法表示这个实体,那么这个表就存在插入异常 更新异常:如果更改表的某个单独属性时,需要更新多行数...原创 2022-04-23 15:03:31 · 9712 阅读 · 0 评论 -
《Mysql精通》-- InnoDB 引擎底层存储和缓存原理
InnoDB 记录存储结构和索引页结构 mysql与磁盘交互的基本单位是页,一页默认是16KB。一次最少从磁盘中读取 16KB 的内容到内存中,一次最少把内存中的 16KB 内容刷新到磁盘中。行格式Compact:在记录 的真实数据处只会存储该列的该列的前 768 个字节的数据,然后把剩余的数据分 散存储在几个其他的页中,记录的真实数据处用 20 个字节存储指向这些页的地址。Dynamic: mysql5.7默认的行格式。不会在记录的真实数据处存储字段真实数据的前 768 .原创 2022-05-06 23:54:01 · 9590 阅读 · 0 评论 -
《Mysql精通》-- 从架构师角度全局理解Mysql性能优化
MySQL性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法:很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的。所以在进行优化时,首先需要关注和优化的应该是架构,如果架构不合理,即使是DBA能做的事情其实是也是比较有限的。对于架构调优,在系统设计时首先需要充分考虑业务的实际情况,是否可以把不适合数据库做的事情放到数据仓库、搜索引擎或者缓存中去做;然后考虑写的并发量有多大,是否需要采用分布式;最后考虑读的压力是否很大,是否需要读写分离。对于核心应用或者金融类..原创 2022-05-05 19:28:19 · 9160 阅读 · 0 评论 -
《Mysql精通》-- Mysql内核查询成本计算
sql语句查询成本的组成 I/O成本:将数据从磁盘读到内存的成本。 CPU成本 :数据读到内存后过滤、排序得到满足条件数据的成本。 总成本 =I/O成本+CPU成本注意:对于InnoDB存储引擎来说,页是磁盘和内存之间交互的基本单位,MySQL规定读取一个页 面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条件的成本默认是0.2。 1.0、0.2这些数字称之为成本常数,这两个成本常数我们最常用到,当然还有其他的成本常数。查看mysql执行所有可能途径使用的成本...原创 2022-04-23 23:43:22 · 10028 阅读 · 0 评论 -
《Mysql精通》-- Mysql内部在索引层面的优化
MRR mysql每次从二级索引中读取到一条记录后,就会根据该记录的主键值 执行回表操作。而在某个扫描区间中的二级索引记录的主键值是无序的,也就是说这些 二级索引记录对应的聚簇索引记录所在的页面的页号是无序的。 每次执行回表操作时都相当于要随机读取一个聚簇索引页面,而这些随机IO带来的 性能开销比较大。MySQL中提出了一个名为Disk-Sweep Multi-Range Read(MRR,多范围 读取)的优化措施,即先读取一部分二级索引记录,将它们的主键值排好序之后再统一执 行回表操作。 ...原创 2022-04-23 21:42:12 · 9364 阅读 · 0 评论 -
《Mysql进阶》-- Mysql的MVCC机制详解
MVCC--多版本并发控制机制(Multi-Version Concurrency Control)Mysql的MVCC指多版本并发控制,Myql在读已提交和可重复读隔离级别下都实现了MVCC机制。保证了mysql在RC和RR事务隔离级别下读取数据的隔离性。MVCC由三部分组成实现:undo日志:回滚日志,mysql每修改记录一次,无论是否提交均会按修改时间顺序把记录记在一个日志文件中,这个文件称为undo日志。记录版本链:对于Innodb引擎的表中有三个隐藏字段,主键、操作事务id原创 2022-04-22 23:13:10 · 9366 阅读 · 0 评论 -
《Mysql进阶》-- Mysql事务隔离级别和锁特性详解
数据库事务的四大特性(ACID):原子性:事务包含的所有数据库操作要么全部执行,要么全部回滚。 一致性:事务应确保数据库的在开始和结束的状态一致。即数据库中的数据应满足完整性约束,如两个客户相互转账,事务发生前两人的账户金额总额是2000,那么事务结束后两人的账户金额总额应当仍然是2000。 隔离性:事务并发时一个事务的执行不应影响另一个事务的执行。 持久性:事务一旦提交,它对数据库的修改应该永久保存在数据库中。数据库事务的隔离级别及各级别下的并发访问问题更新丢失(Lost Update)或原创 2022-04-21 22:30:29 · 9578 阅读 · 0 评论 -
《Mysql进阶》--Mysql索引优化技巧二
分页查询优化示例表:CREATE TABLE `employees` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',`age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',`position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',`hire_time` times原创 2022-04-20 21:47:05 · 9032 阅读 · 0 评论 -
《Mysql进阶》--Mysql索引优化技巧实战一
一、示例表CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄', `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位', `hire_time` ti...原创 2022-04-18 18:50:16 · 9228 阅读 · 0 评论 -
《Mysql进阶》- SQL底层是如何执行的
一、MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 Store层 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在 最常...原创 2022-04-17 23:33:08 · 9334 阅读 · 0 评论 -
《Mysql进阶》-- explain详解和索引最佳实践
explain 两个变种(1)explain extended:会在 explain 的基础上额外提供一些查询优化的信息。紧随其后通过show warnings命令可以得到优化后的查询语句,从而看出优化器优化了什么。额外还有 filtered 列,是一个半分比的值,rows * filtered/100 可以估算出将要和 explain 中前一个表进行连接的行数(前一个表指 explain 中的id值比当前表id值小的表)。mysql> explain extended select...原创 2022-04-17 22:32:16 · 10278 阅读 · 0 评论 -
《Mysql基础》-- 深入理解MySql索引底层数据结构与算法
深入理解MySql索引底层数据结构与算法2021-05-16 10:59:06一、索引本质1、索引的本质select * from t where col2 = 89我们插入到数据表中的数据,有可能分布存储在磁盘不同的空间中,而我们的数据库查询的时候每次都要进行磁盘IO。当我们不加索引的时候,此时查询就是全表扫描,即一行一行的比对数据,多次进行磁盘IO,直到查询到我们所需的数据。而我们所能想到的优化,自然是减少磁盘IO。而减少磁盘IO,我们自然是要减少数据比对的次数,.原创 2022-04-14 22:35:12 · 9427 阅读 · 0 评论 -
《Mysql基础》-- 必须掌握的数据类型
数据类型: 1 . 整形数据 tinyint 1字节 有符号 -127-127 无符号0-255 smallint 2字节 mediumint 3字节 int 4字节 bigint 8字节 int(3)和int(11) 在没设定 zerofill 前没任何区别,设定后不足指定位数的数据会以0填充保存,如果位数超过指定位置但不超过11位,则没任何区别。 int...原创 2022-03-23 19:49:21 · 9593 阅读 · 0 评论 -
《Mysql基础》--必须掌握的指令操作
基本操作:1. 登入数据库 mysql -uroot -proot -h 127.0.0.1 2. 查看数据库、表 show databases show datbles 3. 查看指令的用法 ? create 4. 创建数据库 create database databaseName; 5. 查看创建过程,加\G纵向排列 show create database databaseName ...原创 2021-09-28 23:27:03 · 9015 阅读 · 0 评论