
MySQL学习笔记
文章平均质量分 90
相关书籍,高性能MySQL3,InnoDB存储引擎等
Z.l_
这个作者很懒,什么都没留下…
展开
-
B+树相关数据结构和算法
二分查找法二分查找法(binary search)也称为折半查找法,用来查找一组有序的记录数组中的某一记录,简单来讲就是将记录按照有序化(递增递减)排列,在查找过程中采用跳跃式方式查找,即先以有序序列的中间位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。一次比较将查找区间缩小一半。具体如下:这里有10个数字,现在需要查找48这条记录,二分法查找过程如上,第一次查找为37,48大于37所以在右侧再次二分法查询,这次定位为50大于48在左侧查询,可以得到48,整原创 2021-01-27 14:53:43 · 600 阅读 · 0 评论 -
MySQL相关文件——二进制日志
MySQL二进制日志—binlog一、什么是二进制日志1.概念 二进制日志被称为binlog,它会记录所有的修改数据库的语句或者有可能改变数据库的语句,但是像select,show等不会对数据库进行写操作的语句不会被记录。2.具体分析 二进制日志,内容是二进制的也就是说使用cat等命令是无法直接查看的,在二进制日志中有着“事件”,“位置”的概念的。**事件:**events。在binlog中每一条记录都可以当作是一个“事件”,因为二进制日志记录的是对数据库的修改,也就是每有一次修改就原创 2020-11-03 11:28:25 · 176 阅读 · 0 评论 -
MySQL相关文件——Innodb存储引擎文件
上面说的都是MySQL本身的文件,与存储引擎无关。除了这些文件外,每个表存储引擎都还有自己独有的文件:表空间文件重做日志文件1. 表空间文件Innodb采用将存储的数据按照表空间(tablespace)进行存放的设计。在默认配置下会有一个初始大小为10MB名为ibdata1的文件。这个文件就是默认的表空间文件(tablespace file),可以通过参数innodb_data_file_path对其进行设置。查看参数对应值:mysql> show variables like原创 2020-11-03 11:26:01 · 276 阅读 · 0 评论 -
MySQL相关文件——表结构定义文件
因为MySQL插件式存储引擎体系结构的关系,MySQL数据的存储是根据表进行的,每个表都有一个与之对应的文件。但不论采用什么存储引擎,MySQL都有一个以frm为后缀名的文件(这个特性在MySQL8中被取消),这个文件记录了该表的表结构定义。frm还用来存放视图的定义,如下所示创建一个v_a视图,那么相应的也会产生一个v_a.frm文件,用来记录视图的定义,这个文件是文本文件,可以直接使用cat命令进行查看。mysql> create or replace view v_a as select原创 2020-11-03 11:25:22 · 472 阅读 · 0 评论 -
MySQL相关文件——PID文件
在MySQL实例启动的时候,会把自己的进程ID写入到一个文件中,这个文件就是PID文件。这个文件可以通过参数pid_file进行控制,默认位于数据库目录下,文件名为主机名.pid。当MySQL关闭实例后这个文件也会随之消失。查看pid文件信息:mysql> show variables like 'pid_file'\G*************************** 1. row ***************************Variable_name: pid_file原创 2020-11-03 11:24:29 · 3216 阅读 · 0 评论 -
MySQL相关文件——套接字文件
MySQL有两种主要的连接方式:常用的还是TCP连接:[root@mysql8 data]# mysql -h 192.168.103.67 -uroot -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 14Server version: 8.0.15 MySQL Community Server - GPLCopyright (c)原创 2020-11-03 11:23:47 · 297 阅读 · 0 评论 -
MySQL相关文件——日志文件
日志文件记录了影响MySQL数据库的各种类型活动。MySQL数据库中常见的日志文件有:错误日志(error log)二进制日志(binlog)慢查询日志(slow query log)查询日志(log)1. 错误日志(error log)错误日志记录了MySQL启动,运行,关闭的过程。当数据库出现问题的时候应该首先查看该文件来定位问题。注意:错误日志并不只会记录数据库所有的错误信息,也会记录一些警告信息和正确信息。查看数据库错误日志的位置:show variables l原创 2020-11-03 11:22:43 · 937 阅读 · 0 评论 -
MySQL相关文件——参数文件
1.参数文件当MySQL实例启动的时候,数据库会先去读取一个配置参数文件,用来寻找数据库各种文件的所在位置及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等,在默认情况下,MySQL实例会按照一定顺序在指定的位置进行读取,可以使用mysql --help | grep my.cnf来进行寻找。[root@mysql8 ~]# ps -ef | grep mysqldmysql 65894 1 0 14:56 ? 00:00:00 /bin/sh /usr/原创 2020-11-03 11:21:14 · 357 阅读 · 0 评论 -
InnoDB——关键特性
1.插入缓冲(Insert Buffer)1)Insert BufferInsert Buffer可以说是InnoDB存储引擎中比较关键的特性了。但是它并不是如名字般是缓冲池的组成部分,InnoDB缓冲池中确实存在Insert Buffer中的信息,但是Insert Buffer和数据页一样是物理页的一个组成部分。InnoDB的插入:在InnoDB存储引擎中,主键是行的唯一标识符。通常应用程序中行记录的插入是按照主键递增的顺序进行插入的,因此插入聚集索引(Primary Key)一般是顺序的,原创 2020-10-26 13:48:57 · 259 阅读 · 0 评论 -
InnoDB——Checkpoint
CheckPoint技术目标问题如果每当一个页发生变化就将其写回磁盘那么开销会变得很大,而且如果热点数据都在这几个页中,需要频繁修改,频繁写回在读取磁盘,这样数据库性能会变得极差。除此之外,如果数据库在从缓冲池将页的新版本刷新到磁盘时发生了宕机,那么数据便无法恢复造成数据的丢失。为了避免数据丢失的问题,事务数据库通常都会采用Write Ahead Log的策略,当事务提交的时候,先写重做日志再对页进行修改。当发生宕机而导致数据丢失的时候,可以通过重做日志来进行恢复。场景:如果,重做日志可以无限扩大原创 2020-09-19 13:54:05 · 305 阅读 · 0 评论 -
InnoDB——内存
内存1.缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理,因此可将其视为基于磁盘的数据库系统(Disk-base Database)。在数据库中CPU速度与磁盘速度是有很大差距的,基于磁盘的数据库系统通常使用缓冲池技术来提高数据库的整体性能。缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库中进行读取页的操作,首先将从磁盘读到的页存放到缓冲池中,这个过程称为将页‘FIX’在缓冲池中。下一次再读相同的页的时候,首先判断页是否在缓冲池原创 2020-09-19 13:52:34 · 193 阅读 · 0 评论 -
InnoDB——线程
后台线程InnoDB存储引擎是多线程的,因此后台有多个不同的后台线程,负责处理不同的任务Master Thread核心后台线程,主要负责将缓冲池中的数据异步刷新到磁盘上,保证数据的一致性,包括脏页的刷新,合并插入缓存(Insert BUffer),undo页回收等。IO ThreadInnoDB存储引擎中大量使用AIO(Async IO)来处理写请求,可以极大的提高数据库性能。而IO Thread线程主要负责这些IO请求的回调(call back)处理。IO Thread主要可以分为write原创 2020-09-19 13:51:27 · 629 阅读 · 2 评论 -
MySQL存储引擎介绍
MySQL的组成部分:连接池组件管理服务和工具组件SQL接口组件查询分析器组件优化器组件缓冲组件(cache)插件式存储引擎(相比其他数据库比较大的区别)物理文件存储引擎是底层物理结构的实现,每个存储引擎的开发者可以按照自己的意愿来开发存储引擎是基于表的,而不是数据库。MySQL的存储引擎MySQL数据库独特的插件式存储引擎结构,每个存储引擎都有自己的特点,能够根据不同的应用建立不同存储引擎的表。MySQL开源特性使得用户可以根据自己MySQL预定义的存储引擎接口来编写自己的存.原创 2020-09-14 16:02:38 · 153 阅读 · 0 评论 -
InnoDB文件结构
1.innodb存储引擎文件组织[root@mysql8 ~]# ps -ef | grep mysqldmysql 18070 1 0 14:35 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql_3306/my_3306.cnfmysql 19690 18070 4 14:35 ? 00:00:05 /usr/loca原创 2020-09-06 15:22:47 · 683 阅读 · 0 评论