Innodb关键特性之doublewrite
一、经典Partial page write问题 介绍double write之前我们有必要了解partial page write(部分页失效)问题。 InnoDB的Page Size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘是以Page为单位进行操作的。我们知道,
Innodb关键特性之Insert Buffer
一、Insert Buffer Innodb存储引擎中,主键是唯一的标识符,如果主键是递增的,那么主键插入null会自动增长,同时插入的数据按照顺序存放。如果主键不是自增的,例如UUID这样的,那么插入和辅助索引一样,是随机的。对于非聚集索引,每次插入都要离散读,大大降低了插入的效率。&nbs
浅谈checkpoint技术
MySQL中,一条DML语句,如delete或者update,改变了页中的记录,那么此时页是脏的,即缓冲池的页的版本比磁盘的新,数据库需要将缓冲池的数据刷新到磁盘。 如果每次缓冲池的页发生变化,都要将新版本的页刷新到磁盘,那么性能消耗一定很大,如果将脏页刷新到磁盘的过程中发生宕机,那么数据就不能恢复了。为了避免发生数
innodb新特性之buffer pool动态调整大小
5.7 开始支持buffer pool 动态调整大小,每个buffer_pool_instance都由同样个数的chunk组成(chunks数组), 每个chunk内存大小为innodb_buffer_pool_chunk_size(实际会偏大5%,用于存放chuck中的block信息)。buffer pool以innodb_buffer_pool_chunk_size为单位进行动态增大和缩小。调
innodb新特性之buffer pool预热
背景innodb buffer pool做为innodb最重要的缓存,其缓存命中率的高低会直接影响数据库的性能。因此在数据库发生变更,比如重启、主备切换实例迁移等等,innodb buffer pool 需要一段时间预热,期间数据库的性能会受到明显影响。 另外mysql 5.7以前innodb buffer pool缓存大小修改不是动态的,重启才能生效。因此innodb buffer pool的预
关于Mysql 的 ICP、MRR、BKA等特性
一、ICP( Index_Condition_Pushdown)对 where 中过滤条件的处理,根据索引使用情况分成了三种:(何登成)index key, index filter, table filter如果WHERE条件可以使用索引,MySQL 会把这部分过滤操作放到存储引擎层,存储引擎通过索引过滤,把满足的行从表中读取出。ICP能减少Server层访问存储引擎的次数和引擎层访问基表的次数
MySQL索引提示
SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的。MySQL数据库支持索引提示(INDEX HINT)显式的告诉优化器使用了哪个索引。有以下几种情况可能用到索引提示:1、MySQL数据库的优化器错误的选择了某个索引,导致SQL运行很慢。这个在情况比较少见。优化器在绝大部分情况下工作的非常有效和正确。
为什么优化器选择了聚集索引?
通过这个以下这个案例,来说明优化器在选择索引时候的取舍。查看表结构:MySQL > show create table test2 \G *************************** 1. row ***************************
MySQL count(*)之索引选择
覆盖索引对于一些统计问题,如下:MySQL > show create table test1 \G *************************** 1. row ***************************
MySQL单列索引和联合索引
本文通过一个案例,介绍优化器对单列索引和联合索引的选择。order表的ord_seq字段上有2个索引,单列索引(order_seq)和联合索引(order_seq,order_type)MySQL > explain select * from `order` where order_seq =&nbs
MySQL SHOW INDEX 语法解析
本文对show index from tablename;语法进行分析。如:show index from `order`1、Table 表名2、Non_unique 如果索引不能包括重复值则为0,如果可以则为1。也就是平时所说的唯一索引。3、Key_name 索引名称,如果名字相同则表明是同一个索引,而并不是重复,比如上图中的第二、三条数据,索引名
MySQL5.7+MHA添加/删除slave节点
数据库架构:一主两从master:192.168.8.57slave1:192.168.8.58slave2:192.168.8.59manager:192.168.8.60MHA工具包:mha4mysql-manager-0.58.tar.gzmha4mysql-node-0.58.tar.gz一、添加节点安装OS,修改主机名,hosts配置SSH无密码验证masterssh-copy-id&n
MySQL5.7+MHA+Keepalived高可用配置
数据库架构:一主两从master:192.168.8.57slave1:192.168.8.58slave2:192.168.8.59manager:192.168.8.60MHA工具包:mha4mysql-manager-0.58.tar.gzmha4mysql-node-0.58.tar.gzkeepalived-1.4.5.tar.gz一、主从复制环境和MHA安装如下http://blog.
MySQL5.7一主两从MHA手工故障切换
数据库架构:一主两从master:192.168.8.57slave1:192.168.8.58slave2:192.168.8.59manager:192.168.8.60MHA工具包:mha4mysql-manager-0.58.tar.gzmha4mysql-node-0.58.tar.gz一、修改master_ip_online_change内容1234567891011121314151
MySQL5.7一主两从MHA在线手动平滑切换
数据库架构:一主两从master:192.168.8.57slave1:192.168.8.58slave2:192.168.8.59manager:192.168.8.60MHA工具包:mha4mysql-manager-0.58.tar.gzmha4mysql-node-0.58.tar.gz一、修改master_ip_online_change内容#!/usr/bin/env pe
MySQL5.7一主两从MHA自动切换(VIP方法)
一、master添加vip/sbin/ifconfig enp0s3:1 192.168.8.88/24ifconfig enp0s3: flags=4163 mtu 1500 &nbs
CentOS7搭建MySQL5.7 高可用(MHA)
数据库架构:一主两从master:192.168.8.57slave1:192.168.8.58slave2:192.168.8.59manager:192.168.8.60MHA工具包:mha4mysql-manager-0.58.tar.gzmha4mysql-node-0.58.tar.gzManager工具包主要包括以下几个工具:masterha_check_ssh &nbs
MySQL GTID与MariaDB GTID的不同之处
GTID是全称是Global Transaction Identifier,可简化MySQL的主从切换以及Failover。GTID用于在binlog中唯一标识一个事务。当事务提交时,MySQL Server在写binlog的时候,会先写一个特殊的Binlog Event,类型为GTID_Event,指定下一个事务的GTID,然后再写事务的Binlog。主从同步时GTID_Event和事务的Bin
MyCat实现MySQL双主一从读写分离
本次实验用到四台机器,具体信息如下:1)配置server.xml mysql
xtrabackup远程备份
生产环境中常常将数据库备份至远程服务器,本次测试中,数据库服务器:192.168.8.50,远程备份中心:192.168.8.631、配置SSH秘钥认证ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub mysql@192.168.8.632、使用tar进行备份并以时间对备份进行命名/usr/local/xtrabackup/bin/i