进学阁

业精于勤荒于嬉,行成于思毁于随

0%

物理日志和逻辑日志

日志一般分为逻辑日志与物理日志两类

「逻辑日志」:即执行过的事务中的sql语句,执行的sql语句(增删改)「反向」的信息

「物理日志」mysql 数据最终是保存在数据页中的,物理日志记录的就是数据页变更

阅读全文 »

  • 在应用系统中,我们为加速数据访问,会把高频的数据放在「缓存」(Redis、MongoDB)里,减轻数据库的压力。
  • 在操作系统中,为了减少磁盘IO,引入了「缓冲池」(buffer pool)机制。
  • MySQL作为一个存储系统,为提高性能,减少磁盘IO,同样具有「缓冲池」(buffer pool)机制。

阅读全文 »

在Innodb存储引擎中,后台线程的主要作用是「负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据」。此外它会将已经修改的数据文件刷新到磁盘文件中,保证在发生异常的情况下,Innodb能够恢复到正常的运行状态。

阅读全文 »

「MySQL存储引擎最大的特点就是【插件化】,可以根据自己的需求使用不同的存储引擎,innodb存储引擎支持行级锁以及事务特性,也是多种场合使用较多的存储引擎。」

当官方的存储引擎不足以满足时,我们通过抽象的API接口实现自己的存储引擎。

抽象存储引擎API接口是通过抽象类handler来实现,handler类提供诸如打开/关闭table、扫表、查询Key数据、写记录、删除记录等基础操作方法。

每一个存储引擎通过继承handler类,实现以上提到的方法,在方法里面实现对底层存储引擎的读写接口的转调。

阅读全文 »

一、数据文件的组成

innodb数据逻辑存储形式为表空间,而每一个独立表空间都会有一个.ibd数据文件,ibd文件从大到小组成:

一个ibd数据文件–>Segment(段)–>Extent(区)–>Page(页)–>Row(行)

  • 表空间(Tablesapce)

表空间,用于存储多个ibd数据文件,用于存储表的记录和索引,一个文件包含多个段。

  • 段(Segment)

段由数据段、索引段、回滚段组成,innodb存储引擎索引与数据共同存储,数据段即是B+树叶节点,索引段则存储非叶节点****

  • 区(Extent)

区则是由连续页组成,每个区的大小为1M,一个区中一共有64个连续的页****

页(Page)

页是innodb存储引擎磁盘管理的最小单位,页的大小为16KB,即每次数据的读取与写入都是以页为单位****

包含很多种页类型,比如数据页,undo页,系统页,事务数据页,大的BLOB对象页

  • 行(Row)

行包含记录的字段值,事务ID(Trx id)、滚动指针(Roll pointer)、字段指针(Field pointers)等信息。

阅读全文 »

12.通过Zookeeper配置Mycat高可用

12.1 ZooKeeper是什么?

ZooKeeper是一个集中的服务,用于配置管理命名服务、提供分布式同步和提供组服务 等。 本文将通过ZK配置集中管理去管理Mycat配置(schema.xmlserver.xmlrule.xml …),即:将mycat的配置全部放到ZK上进行监听,一旦配置信息改变,就从ZK获取最新的 配置信息应用到mycat服务中

阅读全文 »

0. 优化思路

1
2
3
4
5
6
7
8
硬件       : DELL R730 40C 128G 10台 SAS(8块:4块raid10 2块热备)+SSD 512G日志  网卡 4块网卡 bonding 1
操作系统 : C7.6,numa THP 关闭 , XFS ,Swap ,sysctl.conf ,limits.conf nofile , 防火墙 selinux 关闭,deadline,No LVM
数据库实例 :
SQL规范 :
索引 :
事务和锁 :
架构 :
安全 :

阅读全文 »

一、MySQL存储引擎概述

「数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据」。不同的存储引擎提供不同的存储机制、索引、锁等功能。许多数据库管理系统都支持多种不同的数据引擎。

在关系数据库中数据的存储是以表的形式存储的,所以「存储引擎也可以称为表类型(Table Type,即存储和操作此表的类型)」

  • 「MySQL的存储引擎」

「MySQL的存储引擎在体系架构中位于第三层,负责MySQL中的数据的存储和提取,是与文件打交道的子系统,它是根据MySQL提供的文件访问层抽象接口定制的一种文件访问机制。」

阅读全文 »

索引和慢查询

慢查询的定义:

主要依据SQL语句的执行时间,它把当前语句的执行时间跟long_query_time 参数做比较,如果语句的执行时间 > long_query_time,就会把这条执行语句记录到慢查询日志里面。long_query_time 参数的默认值是 10s,该参数值可以根据自己的业务需要进行调整。

判断是否应用了索引:

通过 explain命令分析查看,检查结果中的 key 值,是否为NULL。

阅读全文 »

1 复制简介

1
2
3
4
5
6
7
8
9
10
11
12
复制是指:将主库的DDL、DML等操作通过binlog日志,传输到复制服务器(副本),副本进行回放这些日志,从而使得从库和主库数据保持<近似>同步的工作模式。
复制架构:
(1)传统异步:1主1从、1主多从、级联主从、双主
(2)演变:(增强)半同步、过滤、延时、GTID、MTS(多SQL线程并发回放relaylog)
(3)新型:多源复制(5.7+支持)
(4)MGR:5.7.17+支持、8.0增强(WS:WriteSets)
复制主要应用场景:
1. 备份
2. 高可用
3. 读写分离
4. 分布式架构
5. 迁移
阅读全文 »