自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql5.7切换导致gtid不一致

今天在公司的工程环境中做了个案例,手动切换关闭主库的mysql服务,从库上升为主库之后,发现主库处于read_only状态,通过高可用的组件观察了剩余主从库的alive以及delay的状态发现均正常。由于处于公司的内网环境中,所以就没有保存图片,就通过文字的方式记录下今天这个案例。环境:mysql5.7.18 一主两从 做了高可用操作步骤:通过高可用组件发现三台mysql的主从关系,alive,d...

2018-03-26 22:08:36 1177

原创 数据结构笔记

一、数据结构的三要素:逻辑结构、存储结构、运算逻辑结构是独立于存储结构的(数据的存储结构是逻辑结构在计算机上的映射,不能独立于逻辑结构)二、时间复杂度算法工作:所需额外的辅助空间为一个常量,即 空间辅复杂度为O(1)( 其实可以理解为只要这个辅助空间可以用一个确定的常数来表示,与问题规模n无关,就算开辟100个空间在空间复杂度上也算作是O(1))求时间复杂度:可以理解为求循环最深处一共执行循环的次...

2018-03-21 09:35:39 426

原创 高性能mysql读书笔记

1.mysql逻辑结构第一层:连接/线程处理作用:连接处理、授权认证、安全等第二层:查询解析、分析、优化、缓存以及所有的内置函数第三层:存储引擎。存储引擎负责mysql中数据的存储和提取,类似linux下的文件系统。server通过API与存储引擎进行通信1.1连接管理和安全性每个连接查询只能轮流在某个cpu核心或cpu中单独的线程中执行(并不需要为每个新建的连接创建或者销毁线程,服务器会缓存线程...

2018-03-21 09:27:00 449

原创 innodb行记录格式

compact格式下行记录的格式:非null变长字段列表:按照列的顺序逆序放置,列的长度小于255,用1字节表达;大于255,则用2字节NULL标志位:该行数据有null值用1表示,无用0表示记录头信息:包含记录中列数,记录类型,页中下条记录的相对位置等信息 5字节事务ID:6字节回滚指针:7字节Rowid:6字节实际数据注:char字段没全占用其长度空间,会用0x20填充;varchar和cha...

2018-03-16 14:46:57 589

原创 mysql锁

锁:为了支持对共享资源进行并发访问,提供数据的完整性和一致性不同的数据库对锁的实现方式不同,innodb的锁实现和oracle类似,提供一致性的非锁定读,行级锁支持。(行级锁没有额外的开销,可以同时得到并发性和一致性)lock和latch在数据库中都称为锁:latch:称为闩锁(轻量级锁,锁定的时间短),在innodb中可分为mutes(互斥量)和rwlock(读写锁):用来保证并发线程操作临界资...

2018-03-15 16:14:38 659

原创 python中继承、定制类

2.4python中继承继承中不要忘了调用super().__init__def __init__(self,args) super(subclass,self).__init___(args) #初始化父类 pass例:定义一个person类class Person(object): def __init__(self, name, gender): s...

2018-03-12 09:17:18 751

原创 python-模块、面向对象

1.1导入模块使用import语句导入模块例import math导入模块之后,就可以使用该模块下所定义的所有公开的函数、变量和类>>> math.pow(2, 0.5) # pow是函数1.4142135623730951>>> math.pi # pi是变量3.141592653589793 如果是导入模块下的某几个函数例:from math i...

2018-03-11 13:06:32 259

原创 python入门-函数、切片、迭代

1.1.函数:一种代码抽象的方式要调用一个函数,需要知道函数的名称和参数调用abs函数abs(100)100abs(-20)20abs(12.34)12.34注:如果传入的参数数量不对或参数类型不对,会报typeError的错误abs(1, 2)Traceback (most recent call last): File "<stdin>", line 1, in...

2018-03-07 09:22:38 285

原创 python入门-条件判断和循环

1.if语句例:age = 20if age >= 18: #注意冒号,表示代码块开始 print 'your age is', age print 'adult'print 'END'严格python缩进写法:4个空格,不要使用tab2.if-else语句如果判断条件’非此即彼‘,就可以使用if...else语句例:if age >= 18: print...

2018-03-06 14:39:50 291

原创 python入门list和tuple,dict和set

1.list:一种有序的集合,可以随时添加和删除其中的元素用 [ ] 把list所有元素括起来,就是list对象。list中包含的元素可以不是同一种类型,也可以一个元素都没有。例:classmates = ['Michael', 'Bob', 'Tracy']L = ['Michael', 100, True]empty_list = []1.1访问list:通过索引获取list中的指定元素...

2018-03-06 12:01:57 250

原创 mysql-物理备份-Percona xtrabackup

xtrabackup是percona公司开发的一个用于mysql物理热备的备份工具。软件安装后一共有4个可执行文件:     innobackupex:perl脚本,用来备份非innodb表,同时会调用xtrabackup来备份innodb表,会和mysql server进行交互。如:加读锁(FTWRL),获取位点(show slave status)等。即封装了xtrabackup     xb...

2018-03-04 02:00:36 340

原创 mysql覆盖索引详解

如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表。只扫描索引而无需回表的优点:    1.索引条目通常远小于数据行大小,只需要读取索引,则mysql会极大地减少数据访问量。    2.因为索引是按照列值顺序存储的,所以对于IO密集的范围查找会比随机从磁盘读取每一行数据的IO少很多。    3.一些存储引擎如myisam在内存中只缓存索引,数据则依赖于操作...

2018-03-02 12:32:55 49469 12

原创 mysql 体系结构

连接层:connection pool(连接池)原理:预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从‘缓冲池’中取出一个,使用完毕之后在放回去作用:进行身份验证、线程重用、连接限制、检查内存、数据缓存、管理用户的连接、线程处理等需要缓存的需求查看当前数据库的最大连接数限制:查看当前用户的最大连接数限制:(为0即不限制该用户的资源)SQL层:管理服务和工具组件作用:从备份和恢复的安...

2018-02-27 14:41:17 1458

原创 mysql B-Tree、哈希索引、R-Tree、全文索引、前缀索引

B-tree索引:使用B-tree数据结构来存储数据(实际上一般使用的是B+tree,即每一个叶子节点都包含指向下一个叶子节点的指针,为了方便叶子节点的范围遍历)B-tree意味着所有的值都是按顺序存储的,且每一个叶子页到根的距离相同。说明:存储引擎从索引的根节点开始进行搜索,通过节点槽中的指针向下层查找,比较节点页的值和要查找的值找到合适的指针进入下层子节点。存储引擎最终要么找到对应的值,要么该...

2018-02-26 12:34:49 4677 1

原创 mysql聚簇索引详解

聚簇索引不是一种单独的索引类型,而是一种数据存储方式。innodb的聚簇索引实际上在同一个结构中保存了B-tree索引和数据行。当表有聚簇索引时,数据行实际上是存储在索引的叶子页中。聚簇:表示数据行和相邻的键值紧凑地存储在一起。一个表只能有一个聚簇索引聚簇索引如何存放记录如图:聚簇索引的优点:    可以把相关数据保存在一起    数据访问更快(聚集索引将索引和数据保存在同一个b-tree中)  ...

2018-02-26 12:31:10 17517 3

原创 浅析redo、undo、checkpoint

事务的原子性:事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。事务的持久性:事务一旦完成,该事务对数据库所做的所有修改都会持久的保存到数据库中。undo log:为了实现事务的原子性,在innodb中,还用undo log实现MVCCundo log原理:在操作任何数据之前,首先将数据备份到一个地方(即undo log),然后进行数据修改,如果出现错误或用户执行了rollbac...

2018-02-23 15:04:17 1089

原创 mysql约束、视图、分区表总结

innodb数据完整性实体完整性:保证表中有一个主键域完整性:保证数据每列的值满足特定的条件(可以通过以下几种途径保证:1.选择合适的数据类型确保一个数据值满足特定条件;2.外键约束;3.编写触发器;4.可以用delete约束作为强制域完整性的一个方面)参照完整性:保证两张表之间的关系(可以通过外键和编写触发器强制执行)innodb存储引擎提供的约束:primary key、unique key、...

2018-02-22 15:53:01 633

原创 mysql线上SQL捕获和分析

线上SQL捕获方法基于tcpdump线上SQL抓取基于查询日志记录基于慢日志记录mysql SQL执行的一个过程说明:tcpdump抓取基于的是mysql接入层;基于查询日志和慢日志基于的是日志层利用tcpdump可能存在的问题:1.在事务中的SQL抓取乱码,解析不出来(如tpcc-mysql压测)2.利用strings解出来的东西,处理着样子多样,较难匹配3.没有好的工具做分析mysql日志的作...

2018-02-11 23:46:01 1849

原创 从mysql特性思考优化

业界里比较流行的mysql版本:官方版mysql,percona server,mariadb,webscaleweb , tokuDB如果有大量数据写入,推荐使用tokudb选择合适的Nosql产品加速请求:redis做LBS相关应用可以考虑:mongoDBmysql对磁盘的利用特点:undo log的IO特征:顺序写,随机读redo log和binlog的IO特征:顺序写,顺序读datafil...

2018-02-11 23:44:35 168

原创 mysql简单优化的一些总结

mysql对cpu的利用特点:5.1之前,多核支持较弱;5.1可利用4个核;5.5可利用24核;5.6可利用64个核;每个连接对应一个线程,每个并发query只能使用一个核mysql对内存的利用特点:有全局内存和会话内存,建议将会话内存设置较小;内存管理简单、有效(如在高并发环境下,可以增加物理内存以减少物理IO,提高并发性能);query cache建议关闭或设置很小

2018-02-07 11:21:23 461

原创 mysql基础知识介绍

mysql体系架构连接层:响应连接,身份以及安全性的验证SQL层:权限判断,SQL解析,执行计划的优化,检查高速缓存是否有该数据,处理常用的内置函数,存储过程,触发器,视图存储层:mysql常见的存储引擎myisam:堆表,不支持事务,不支持crash_recovery_safe,不支持MVCC,对cpu和内存利用率不高memory:基于内存的hash列表的存储引擎

2018-02-07 09:50:21 283

原创 mysql复制

基于事务的复制group commit:binlog中加入了一个队列从库的配置要比主库的高才能追的上原因:(tokuDB replication read free), 减少从库在sql_thread执行的时间,传统的执行时把SQL_thread的拉取到buffer pool中,在往磁盘上刷新。replication read free是直接刷新复制的过程:1.binlog

2018-02-04 00:02:22 286

原创 mysql-innodb数据页结构

说明:File Header 记录页的一些头信息,共占用38字节,组成部分如图:innodb存储引擎中页的类型:Page Header:记录数据页的状态信息,共占56个字节,组成部分如图:infimum和supermum record:虚拟的行记录,限定记录的边界。infimum记录的是比页中任何主键都要小的值,supermum值比任何可能大的值还要大的值。在页

2018-02-02 15:31:10 6144 2

原创 mysql-innodb行记录格式

可以通过show table status like 'table_name'命令查看当前表使用的行格式(row_format字段)row_formatredundant,最早的行格式首部是字段长度偏移列表,按照列的顺序逆序放置,其长度为(若列的长度小于255字节,用1字节表示;若大于255个字节,用2字节表示)记录头信息:占用6字节,含义如图:说明:n_fie

2018-02-02 12:05:26 1674

原创 mysql-MRR

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

2018-01-31 15:49:31 1504

原创 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 902

原创 mysql索引

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

2018-01-29 15:07:14 262

原创 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 430

原创 sync、fsync与fdatasync函数详解

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

2018-01-28 20:18:52 1569

原创 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 367

原创 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 8175

原创 share nothing和share disk

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

2018-01-27 00:30:22 1654

原创 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 3232

转载 数据库索引B+树

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

2018-01-25 15:21:26 228

原创 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 422

原创 mysql-innodb关键特性

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

2018-01-23 12:02:15 1322

原创 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 220

原创 最新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 322

原创 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 2699

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

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

2018-01-17 16:31:14 828

空空如也

空空如也

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

TA关注的人

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