随笔分类 - mysql底层
摘要:mysql主从复制 要想实现mysql的主从复制需要先了解二进制日志(bin log)和中继日志(relay log)。 二进制日志(bin log) binlog即binary log,二进制日志文件,也叫作变更日志(update log),数据库服务每次重启之后都会生成一个对应的bin log日
阅读全文
摘要:多版本并发控制 什么是MVCC 1、多版本并发控制(MVCC)解决了脏读、不可重复读、幻读的问题,保证了事务的隔离性,实现了数据的一致性读,。 2、MVCC实现依赖于 隐藏字段(trx_id、roll_pointer)、undo log:实现了多版本 readview:实现了并发控制 快照读和当前读
阅读全文
摘要:事务的基础概念 事务的认识 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。当在一个事务中执行多个操作时,要么所有的事务都被提交( commit ),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改 ,整个事务回滚( rollback )到最初状态。 事务的ACID特性
阅读全文
摘要:mysql锁 事务的隔离性是通过锁来实现的。为保证数据的一致性,需要锁对并发事务操作进行控制。同时锁机制也为实现MySQL的各个隔离级别提供了保证。 mysql并发事务访问相同的记录会出现什么问题(在没有锁的情况下) 1.1读-读情况 读-读情况:即并发事务相继读取相同的记录。读取操作本身不会对记录
阅读全文
摘要:mysql的事务日志 事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现。 事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。 REDO LOG称为重做日志:提供再写入操作,恢复提交事务修改的页操作,用来保证事务
阅读全文
摘要:mysql的调优 调优的最终目的:节省系统资源、提高响应速度下面从6个维度对mysql进行优化。 第一步:对服务器的参数进行调优 通过show profile命令分析,如果sql语句在执行过程中等待时间长,就需要对mysql服务器的参数进行调优。 1.1优化服务器的硬件 服务器的硬件性能直接决定着M
阅读全文
摘要:要想设计一个结构合理关系型数据库,就应该遵守一定的范式 设计规范 1范式 范式:在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 1.1范式的包括哪些 目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是: 第一范式(1NF)、 第二范式(2NF)、 第三范式(3NF)、 巴斯-
阅读全文
摘要:性能分析工具 1服务器优化的步骤 2查询系统参数 在MySQL中,可以使用 SHOW STATUS 语句查询一些MySQL数据库服务器的性能参数、执行频率 。 SHOW STATUS语句语法如下: SHOW [GLOBAL|SESSION] STATUS LIKE '参数'; 参数如下: Conne
阅读全文
摘要:索引优化 索引失效(已经创建索引,但是不能使用索引) 1.1全值匹配我最爱 当查询结果一样的前提下:查询语句不变,where语句中匹配的索引字段key_len值越大查询就越快。 1.2按照主键自增的插入数据 我们自定义的主键列id拥有AUTO_INCREMENT属性,在插入记录时存储引擎会自动为我们
阅读全文
摘要:索引的创建 索引的分类 普通索引:允许被索引的数据列包含重复的值 INDEX(year_publication) 唯一索引:可以保证数据记录的唯一性(可以有多个null值) UNIQUE INDEX uk_idx_id(id) 主键索引:是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于
阅读全文
摘要:设计索引 一、页中记录的格式(以compact行格式为列) record_type:记录头信息的一项属性,表示记录的类型,0表示普通记录、1目录项记录、2表示最小记录、3 表示最大记录。 next_record :记录头信息的一项属性,表示下一条地址相对于本条记录的地址偏移量,我们用箭头来表明下一条
阅读全文
摘要:存储引擎 存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎,也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。 1.1 InnoDB 引擎:具备外键支持功能的事务存储引擎(使用大数据文件) 1.2 MyISAM 引擎:主要的非事务处理存储引擎(适用于
阅读全文
摘要:msyql逻辑架构 逻辑架构的解析 逻辑架构图如下(序号代表的是:服务器处理客户端请求的流程) 1.1connectors connectors是指使用不同语言的客户端与mysql server服务器进行交互。 1.2连接层 客户端访问mysql服务器之前,需要先建立TCP连接;当mysql服务器收
阅读全文
摘要:查看mysql的主要目录结构 通过命名查看mysql的目录结构:find / -name mysql 1.1数据库文件的存放路径 MySQL数据库文件的存放路径:/var/lib/mysql/ 1.2相关命令的存放路径 相关命令目录:/usr/bin和/usr/sbin。 /usr/bin目录 /u
阅读全文
摘要:基础理解:通过对用户赋予某些权限就可以控制用户对数据库的访问 更深层次的理解:当mysql对用户赋予某些权限时,mysql底层是如何控制用户对数据库的访问 用户管理和权限管理 (基础理解) 用户管理 1.1登录mysql服务器 启动mysql服务器后,可以通过mysql命令来登录mysql服务器:
阅读全文