自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 mysql-MRR

MRR(Multi-Range Read ):将随机 IO 转化为顺序 IO 以降低查询过程中 IO 开销的一种手段MRR的使用过程:先通过二级索引取出满足条件的二级索引和主键放到缓冲区(大小由参数read_rnd_buffer_size控制)中,当该缓冲区满了之后,再通过主键进行排序,最后按照排序后的结果集取表中的数据。(由于此时表是顺序的,就将随机IO变成了顺序IO,多页数据记录可一次性读

2018-01-31 15:49:31 1521

原创 mysql-ICP

ICP(index condition pushdown)的作用:ICP can reduce the number of times the storage engine must access the base table and the number of times the MySQL server must access the storage engine。ICP可以减少存储引

2018-01-30 22:02:33 922

原创 mysql索引

索引基础理论知识二分查找法:在有序数组中查找某一特定元素的搜索算法 优点:比较次数少,查找速度快,平均性能好 缺点:待查表为有序表,插入删除困难。所以适用于不常变动而查找频繁的有序列表平衡树,平衡二叉树特点:为一棵空树和左右两个子树的高度差的绝对值不超过1,且左右两个子树也是平衡二叉树 不平衡树辉通过自旋,变成平衡树 平衡树和二叉查找树最大的区别:前者是平衡的,后者未必

2018-01-29 15:07:14 271

原创 mysql主从复制中maste、slave中的主要配置参数

master配置参数:log-binbinlog文件名前缀,可以是全路径或相对路径log-bin=mybinloglog-bin=/data/mysql/test-3306/mybinlog不可在线动态修改server-id复制集群中的唯一对象ID,同一集群内不可重复可在线动态修改log-bin-indexbinlog索引文件前缀名,和log-bin一样

2018-01-28 21:00:36 443

原创 sync、fsync与fdatasync函数详解

在研究mysql配置文件中sync_binlog=N参数之中,发现该参数的含义是在N个SQL之后,调用了fdatasync()函数刷新binlog到磁盘,所以就好好研究了下sync、fsync和fdatasync这三个函数,也记录下来分享一波。名词解释:脏页:当进程修改了缓存中的数据时,该页就被标记为脏页内存映射:一个文件到一块内存的映射延迟写(delayed write): 传统

2018-01-28 20:18:52 1626

原创 mysql binlog详解

1、二进制日志的启用  二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001和XXX-bin.index,若配置选项没有给出文件名,Mysql将使用主机名称命名这两个文件,其中.index文件包含一份全体日志文件的清单。  Mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,而不会记录SELECT

2018-01-27 00:36:48 386

原创 mysql server-id作用和binlog文件

server-id的作用:1.mysql的同步数据中是包含server-id的,用于标识该语句最初从哪个server写入,所以server-id一定要有2.每一个同步中的slave在master上都有对应的一个master线程,该线程就是通过slave的server-id来标识的;每个slave在master端最多有一个master线程,如果两个slave的server-id相同,则后一个

2018-01-27 00:35:54 8310

原创 share nothing和share disk

share nothing架构下,每个结点都有自己的CPU、内存、存储。跨结点的数据访问通过结点之间的网络通讯来完成。share disk架构下,每个结点有自己的CPU和内存,但是共享同一个存储。也就是说,存储只有一份,放在单独的分布式文件系统上,由文件系统本身来保证其可用性,一般由高端的专门存储设备来完成。大多数分布式数据库都是share nothing的。比较典型的sh

2018-01-27 00:30:22 1684

原创 mysql5.7关闭NUMA方法

非一致存储访问结构 (NUMA : Non-Uniform Memory Access) 也是最新的内存管理技术。它和对称多处理器结构 (SMP : Symmetric Multi-Processor) 是对应的。MySQL单机单实例,建议关闭NUMA,关闭的方法有三种:1.硬件层,在BIOS中设置关闭;2.OS内核,启动时设置numa=off;3.可以用numactl命令

2018-01-27 00:26:54 3274

转载 数据库索引B+树

B树二叉搜索树:1.所有非叶子节点至多拥有两个儿子(left和right)2.所有节点存储一个关键字3.非叶子节点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树如:B树的搜索:从根节点开始,如果查询的关键字与节点的关键字相等,则命中;否则,如果查询关键字比节点关键字小,则进入左儿子;如果比节点关键字大,则进入右儿子;如果左儿子和右儿子的指针为空

2018-01-25 15:21:26 243

原创 mysql -innodb存储引擎体系结构

说明: recover thread:rollback clean thread,recv write thread kernel thread:dict stats thread ,buf dump thread ,master thread,page cleaner thread ,purge thread,insert buffer thread,read thread,write

2018-01-24 16:20:27 438

原创 mysql-innodb关键特性

一、insert buffer1.插入缓冲(insert buffer):数据页一样,是物理页的一个组成部分,其数据结构是一棵B+树,存放在ibdata1(共享表空间)中。注:并不是所有的主键插入都是顺序的,若主键是UUID,则插入和辅助索引一样,同样是随机的对于非聚集索引的插入或更新操作,不是每一次直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入;若不

2018-01-23 12:02:15 1338

原创 mysql-innodb存储引擎概述

一、innodb体系架构1、后台线程(1)master thread负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性(包括脏页的刷新,合并插入缓冲,undo页回收等)(2)IO thread负责将使用了AIO(async io)处理写IO请求的IO回调,io thread包括(insert buffer 、write、read、log),可以通过innodb_read_io

2018-01-22 17:10:02 238

原创 最新my.cnf可用于5.6&5.7

[MySQL]prompt = [\\u@\\h][\\d]>\\_  #自定义登录提示信息[mysqld]#基本设置#user = mysql #用户名sql_mode =“STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO

2018-01-19 22:31:57 335

原创 mysql-insert锁机制

select * from aa;"],[20,"\n","33:2"],[20,"+----+------+-----+-------+"],[20,"\n","33:2"],[20,"| id | name | age | stage |"],[20,"\n","33:2"],[20,"+----+------+-----+-------+"],[20,"\n","33:2"],[20,"| 

2018-01-18 17:10:34 2788

原创 理解innodb锁(record gap next-key lock)

Record lock单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql没有走任何索引时,那么将会在每一条聚集索引后面加X锁,这个类似于表锁Gap lock在索引记录之间的间隙中加锁,或者是在某一条索引记录之前或者之后加锁,

2018-01-17 16:31:14 846

原创 mysql-innodb存储引擎锁详解

锁机制用于管理对共享资源(并不仅仅是‘行记录’)的并发访问如:在操作缓冲池中的LRU列表(删除、添加、移动列表中的元素),为了保证一致性,也可以加锁innodb实现了两种标准的行级锁:共享锁(S):允许事务读一行数据排他锁(X):允许事务删除或者更新一行数据说明:当一个事务已经获得共享锁,另外的事务可以立即获得共享锁,但是想要获得排他锁就必须要等共享锁释放之后才可以获得。i

2018-01-17 16:28:03 612

原创 mysql索引内部实现与算法

innodb支持的常见索引:哈希索引(自适应的)B(balance)+树索引:构造类似二叉树,根据键值快速找到数据原理:B+树索引通过找到被查数据所在的页,然后将页读入内存,再在内存中进行查找,最后得到查找的数据。二分查找法(折半查找法):查找一组有序的记录数组中的某一记录基本思想:将记录按有序化(递增或者递减)排列,先以有序数列中的中点位置为比较对象,如果要找

2018-01-16 16:58:11 587

原创 mysql5.7在线收缩undo表空间

mysql5.5在mysql5.5和之前,innodb的undo log是存放在ibdata1(共享表空间)中,当开启事务后,事务所使用的undo log会存放在ibdata1中,即使这个事务被关闭,undo log也会一直占用空间此时的ibdata1为58M,然后执行undo操作将自动提交设为0,接着执行update语句后,发现ibdata1增长到了114M

2018-01-15 14:48:22 1561 1

原创 mysql-innodb存储引擎读书笔记(二)

mysql实例的启动过程中对innodb表存储引擎的处理过程参数Innodb_fast_shutdown影响着表的存储引擎innodb的行为可取值0、1、20表示当关闭mysql时,innodb需要完成所有的full purge和merge insert buffer1表示不需要完成full purge和merge insert buffer但是在缓冲池中的一些脏数据还是会刷新到磁盘(

2018-01-12 17:36:14 242

原创 mysql-innodb存储引擎读书笔记(一)

连接mysql时使用unix套接字只能在mysql客户端和数据库实例在同一台服务器上innnodb体系架构:后台线程:刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据;将已修改的数据文件刷新到磁盘默认情况下,innodb有7个后台线程——4个IO thread,1个master thread,1个lock监控线程,1个错误监控线程(IO thread的数量由配置文件in

2018-01-11 16:23:14 313

原创 mysql-innodb锁类型详细介绍

数据库锁定机制就是为了保证数据的一致性,使得各种共享资源在被并发访问时变得有序。mysql支持三种级别的锁定机制:表级锁定(table-level),行级锁定(row-level),页级锁定(page-level)。1.表级锁定(table-level)表级锁是mysql中锁粒度最大的锁定机制,一次会将整张表锁定,不会出现死锁问题2.行级锁定(row-level)行级锁是锁

2018-01-10 14:25:35 1542

转载 mysql5.6并行复制体系结构

说明:如果在mysql5.6开启并行复制功能,SQL线程就变成了coordinator线程,那么coordinator线程主要负责两部分内容:1.若判断可以并行执行,那么选择worker线程执行事务的二进制日志2.若判断不可以并行执行,如该操作是DDL,亦或者是事务跨schema操作,则等待所有的worker线程执行完成之后在执行当前的日志所以,coordinator线程并不是仅将

2018-01-09 15:13:09 495

转载 滚蛋吧,MySQL主从复制延迟

转自姜承尧段子:元旦,X骑着摩拜单车去深圳金茂JW万豪酒店happy。酒店门口把摩拜扔给门童,让其泊车。作为平时泊车法拉利、宾利等豪车的门童,顿时一脸懵逼。在内网看到同事写的文章,关于并行复制的调优,很具实战意义。之前写过并行复制的实现原理(见:MySQL 5.7并行复制实现原理与调优),并留下一道思考题给小伙伴。其实调优的思想和这个案例如出一辙。加之MySQL 8.0的发布,

2018-01-09 09:36:34 10062 2

原创 mysql——mysql.cnf配置文件详细介绍

mysql配置文件加载顺序Default options are read from the following files in the given order:加载顺序:/etc/my.cnf   /etc/mysql/my.cnf  ~/.my.cnf以下是my.cnf配置文件参数解释:[client]port = 3306 #端口号socket = /tmp/m

2018-01-08 17:21:29 15815 1

转载 mysql 事务

事务的ACID属性:原子性:事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行一致性:在事务开始和结束时,都必须保持一致状态,所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构也必须是正确的隔离性:保证事务在不受外部并发操作影响的独立环境执行,持久性:事务完成之后,对数据的修改是永久性的并发事务带来的问题:更新丢失

2018-01-08 16:41:58 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除