一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在某一个页面(这条记录最终被插入的位置)的多个偏移位置写入某个长度的值,例如页头的记录数.槽数.页尾槽数据.页中的记录值等.这些本是一些物理操作,而Innodb为了节省日志量及其它原因,设计为逻辑处理的方式,即在一个页面上插入一条记录时,对应的日志内容包括表空间号.页面号.将被记录的各个列的值等内容,…
在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制.GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高. 1.GTID的优点 (1)基于GTID搭建主从复制根据简单. (2)可以确保每个事务只会被执行一次. (3)可以方便的实现Replication的Failover,不需要像传统模式复制那样去找master_log_file和master_log_pos. (4)GTID在MGR中也发挥了中要作用.MG…
1.半同步复制的特征 (1)从库会在连接到主库时告诉主库,它是不是配置了半同步. (2)如果半同步复制在主库端是开启了的,并且至少有一个半同步复制的从节点,那么此时主库的事务线程在提交时会被阻塞并等待,结果有两种可能,要么至少一个从库节点通知它已经收到了所有这个事务的Binlog事件,要么一直等待直到超过配置的某一个时间点为止,而此时,半同步复制将自动关闭,转换为异步复制. (3)从库节点只有在接收到某一个事务的所有Binlog,将其写入并Flush到Relay Log文件之后,才会通知对应主库…
一般在生产环境中,很少用MySQL单实例来支撑业务,大部分的MySQL应用都是采用搭建集群的方法.搭建MySQL集群,可以进行数据库层面的读写分离.负载均衡或数据备份.基于MySQL原生的Replication是最常见的保证数据库安全的机制,满足数据库的高可用,在数据库发生宕机的情况后,其他节点还能快速提供服务,并且数据库的数据不丢失. Binlog是用来保存数据库修改的日志信息.一般的主从复制都是基于Binlog的,Binlog的安全直接关系到主从复制的安全,而Binlog的写入方式主要由参数…
1.InnoDB的特点 :(1)Fully ACID (InnoDB默认的Repeat Read隔离级别支持):(2)Row-level Locking(支持行锁):(3)Multi-version concurrency control (MVCC 支持多版本控制):(4)Foreign key support (支持外键):(5)Automatic deadlock detection(死锁自动检测):(6)High performance.High scalability.High ava…
1.InnoDB的数据存储结构 InnoDB中数据是通过段.簇.页面构成的. (1)段是表空间文件中的主要组织结构,它是一个逻辑概念,用来管理物理文件,是构成索引.表.回滚段的基本元素.创建一个索引(B+树)时会同时创建两个段,分别是内节点段和叶子段,内节点段用来管理(存储)B+树中非叶子节点(页面)的数据,叶子节点用来管理(存储)B+树中叶子节点数据.一个索引包括2个段,那么一个表的段的数目,就是索引的个数乘以2了. (2)簇是构成段的基本元素,一个段有若干个簇构成.一个簇是物理上连续分配的一…
information_schema 此数据库是MySQL数据库自带的,主要存储数据库的元数据,保存了关于MySQL服务器维护的所有其他数据库的信息,如数据库名.数据库表.表列的数据类型及访问权限等. 这个库在很多情况下,可以帮助我们做一些自动化处理的工作,比如巡检程序找到所有的MyISAM表,或者是找到所有的自增列快达到上限的表.很多工具的信息来源,比如Percona Toolkit,它在查一些信息的时候也是通过在这个库上执行SQL语句来做的. 这个库有其明显的缺点:它在每次查找的时候,都会现…
1.什么是锁: 对共享资源进行并发访问控制,提供数据的完整性和一致性. 2.锁的区别: 类型 lock latch 对象 事务 线程 保护 数据库内容 内存数据结构 持续时间 整个事务过程 临界资源 模式 行锁.表锁.意向锁 读写锁.互斥量 死锁 通过waits-for graph.time out等机制进行死锁检测与处理 无死锁检测与处理机制.仅通过应用程序加锁的顺序(latch leveling)保证无死锁的情况发生. 存在于 Lock Manager的哈希表中 每个数据结构对象中 latc…
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装,以 CentOS6.9 操作系统为例. 一.rpm 安装 安装速度较快,通常适用于企业中大规模部署 mysql,安装步骤如下: (1)首先下载 MySQL 的 rpm 安装包, 如下: 客户端:http://dev.mysql.com/get/Down- 服务端:http://dev.mysql.c…
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理(四) - 数据更新>的下篇. 目录 一.视图 1.视图和表 (1)视图:从 SQL 的角度来看视图就是一张表. (2)视图和表的区别:是否保存了实际的数据.数据库中的数据实际上保存到计算机的存储设备(如硬盘):视图实际上保存的是 SELECT 语句,从视图中读取数据时,视图会在内部执行该 SELETC…