![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql
anickname
专注大数据技术
展开
-
mysql基于成本的优化
mysql在实际执行查询语句之前会经查询优化器评估一个成本最低的方式去执行查询,成本是怎么评估的呢?分为两个部分: IO成本:mysql规定读取一个页面的成本是1.0 CPU成本:CPU成本是指对记录进行条件判断的成本,mysql规定判断一条记录的成本为0.2 从上可以看出,我们需要两个数据: 核算IO成本需要页面数量 核算CPU成本需要记录数 总成本=IO成本+CPU成本 通常选择最低...原创 2019-10-30 15:48:58 · 2890 阅读 · 0 评论 -
mysql多表连接
首先要明确的是内连接、外连接(分左外连接和右外连接)的区别: select * from t1,t2:这种写法等价于 select * from t1 join t2 select * from t1 inner join t2 select * from t1 cross join t2 查询出来的结果集是笛卡尔积,条数为t1表的条数乘以t2表的条数。 内连接:前面的连接中没有进行条件...原创 2019-10-29 11:45:40 · 400 阅读 · 0 评论 -
mysql表的访问方法
mysql执行查询语句的时候,会有许多方式访问表,总体分为以下两大类: 使用索引 全表扫描 如果一个查询sql中包含多个索引,一般情况下,会选取使用索引返回的记录少的那一个,其他的过滤条件在返回完整用户记录时再进行过滤匹配。但特殊情况下,多个索引也会都使用(比如索引合并)。 具体来说有以下访问表的方法: const:针对主键和唯一索引 ref:普通二级索引等值匹配 ref_or_nul...原创 2019-10-28 15:22:25 · 788 阅读 · 0 评论 -
mysql的表空间结构
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! 表空间分为系统表空间和独立表空间,一般情况下一张表会对应一个独立表空间。为了管理表空间,设计了各种类型的页和链表,表空间的管理是非常复杂的。那么表空间存的是什么东西呢?记录是怎么存在于表空间中的呢?为了管理表空间又引入了哪些概念呢? 表空间可以看成是由数据页组成的集合,存储记录时,从表空间中取一个页来存记录,但是我...原创 2019-10-25 16:55:26 · 589 阅读 · 0 评论 -
mysql数据目录
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! mysql数据目录是放mysql运行中产生数据的地方,也就是数据库、表、视图、触发器等数据。数据库目录在什么位置?可以通过在mysql命令行中输入:show variables like ‘datadir’查看。 在数据目录下,一个数据库对应其下面的一个同名子目录,子目录下有一个db.opt专门描述该数据库相关信息...原创 2019-10-16 16:01:31 · 221 阅读 · 0 评论 -
mysql B+树索引使用要点
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! 我们知道引入索引是为了快速查询,但是往往一个系统或者软件引入了新的模块、功能或者组件,虽然丰富了产品特性,但是不可以避免的提升了系统或软件的复杂性和耦合性。因此要正确的使用索引,必须清楚其背后的原理。 B+树索引并不是建的越多越好,因为: 空间上,B+树的每个节点对应一个数据页,一个页大小为16KB,节点越多,越...原创 2019-10-15 14:57:02 · 173 阅读 · 0 评论 -
mysql的B+树索引
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! 以mysql中的innodb引擎为例,索引是个什么东西?为什么说索引即数据?一个2层B+树索引最多可以存多少条数据?聚簇索引,二级索引,联合索引? 在单个页中进行记录查找分为: 定位记录所在的槽 遍历槽比对记录 真实的场景中,表中的数据会分布在很多的页中。记录的查找也在这些页中进行,如果我们不进行任何查找优化,...原创 2019-10-14 15:19:35 · 187 阅读 · 0 评论 -
mysql的页结构
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! mysql的记录格式是放在数据页中的,准确的说是user records部分。一个页大小为16KB,数据页是mysql和磁盘交互的基本单位。mysql出于不同的目的设计了不同类型的数据页,但页的结构是相同的,不同的是不同页中的页结构填充的内容是有差异的。 页的结构如下所示: File header ...原创 2019-10-12 15:29:41 · 1321 阅读 · 1 评论 -
mysql innodb记录存储格式
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! mysql innodb引擎将数据存储在磁盘中,不同的引擎存储形式不同,有的则不需要存储,比如memory引擎。 innodb引擎底层数据的存储格式形式如下: 变长字段长度列表 NULL值列表 头信息 列1值 列2值 列n值....... 前面三个单元格是记录的附加信息,为了标识...原创 2019-10-10 15:43:17 · 642 阅读 · 0 评论 -
mysql字符集
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! 字符集界定能够将哪些字符编码成二进制码,比较规则则是一种比较字符大小的规则。 我们通常遇到的乱码问题,本质是编解码出现了问题。也即是编码和解码字符集不一致导致的。 在mysql中utf8其实是utf8mb3,采用的是1-3个变长字节。而utf8mb4则是采用的1-4个变长字节,如果存储emoji表情,需要使用ut...原创 2019-10-09 16:03:24 · 312 阅读 · 0 评论 -
mysql的启动配置参数
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! 在启动mysql服务器端程序的时候,可以加入一些启动选项,这些启动选项可以影响后续程序的一些行为。比如常见的默认存储引擎就可以通过指定启动选项来设置,如: bin/mysqld --default-storage-engine=myisam 后面还可以加入其它的启动选项,不过这种通过命令行的方式来指定启动参数不够...原创 2019-09-30 14:37:08 · 4919 阅读 · 0 评论 -
初步认知mysql
这篇文章是自己学习mysql随手写的杂记,编辑混乱且不够严谨,请勿参考,谢谢! mysql采用客户端/服务器端架构,每运行一个mysql服务器端程序,操作系统随机产生一个进程号,进程名为mysqld。客户端启动产生的进程名为mysql。一般mysql安装包都会包括服务器端程序和客户端程序,所以mysql安装好了,启动好服务端后,可以直接启动客户端连接上服务器程序。 客户端和服务器端进程通信有多...原创 2019-09-29 16:38:41 · 233 阅读 · 0 评论