自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 InnoDB MVCC解析

innodb的多版本控制主要是依靠readview+undo log实现的,其中readview为事务当前系统的可见性视图,即当前时刻的事务系统trx_sys快照,通过readview来判断记录对当前事务的可见性;undo log以链表的形式按新旧顺序存储一行记录的历史数据。 下面分别解析rea...

2019-03-25 23:19:32

阅读数 326

评论数 0

原创 CockroachDB集群搭建和配置

CockroachDB集群搭建和配置 下载 上crdb官网https://www.cockroachlabs.com/docs/releases/v2.0.5.html 找二进制包 Production releases是已经GA的版本,Testing是最新的测试版本。 ...

2018-08-29 22:46:19

阅读数 1779

评论数 0

原创 CockroachDB中一个query是如何执行的?

CockroachDB  CockroachDB架构: Postgres wire protocol client和客户端之间用pgsql的协议通信,用户连接由pgwire包的pgwire.v3conn.serve()维持,它负责读取query,将query发给sql.Execu...

2018-08-11 21:33:30

阅读数 1192

评论数 0

原创 CockroachDB分布式事务解析

事务层 事务层实现了对并发操作的ACID事务支持。 CRDB事务分为两个阶段: write & reads,即事务执行阶段,当进行写操作时,CRDB并不会直接对硬盘的数据进行修改,而是使用另外两个东西来进行辅助,这两个东西也避免了锁的使用: ...

2018-08-11 21:21:27

阅读数 1312

评论数 0

原创 高性能CockroachDB--如何获得更好的性能

  Gain better performance for CRDB 节点参数设置: --attrs,标记node的特点,比如ram大小,硬盘种类,大小等。主要跟replication zone配合使用,zone能通过这些特点来进行库、表、行级别的数据分离存储。比如限制某个表的数...

2018-07-22 00:07:18

阅读数 3925

评论数 0

原创 CockroachDB分布式SQL层架构解析

SQL 层SQL层主要用来将SQL语句转化为K-V操作,并将操作送给事务层。SQL Parser, Planner, Executor,CRDB通过yacc将语句解析为抽象语句树(AST),yacc是描述CRDB支持的语法的文件;通过生成的AST,CRDB将其生成计划树,计划树的节点是planNo...

2018-07-15 00:12:55

阅读数 1643

评论数 0

原创 CockroachDB生产环境成功应用案例

百度云业务类型业务分成三部分:在线交易、轻量级的在线分析(例如实时营销类业务根据用户画像推送相关联的产品)、重量级的离线分析(例如构建用户画像)。在线交易和轻量级分析直接由CockroachDB集群处理,离线分析部分由Spark集群通过CockroachDB提供的KV接口读取数据运行离线分析,把离...

2018-07-15 00:09:51

阅读数 2231

评论数 0

转载 Galera replication原理详解

转载自:http://www.gpfeng.com/?p=603这篇文章总结了之前对Galera replication的调研,内容包括Galera特性,原理,Galera cluster配置,参数及性能等Galera replication是什么MySQL DBA及开发应该都知道MySQL源生复...

2018-06-29 21:16:25

阅读数 2754

评论数 0

翻译 Galera vs Group Replication的区别

这篇文章翻译自percona blog:https://www.percona.com/blog/2017/02/24/battle-for-synchronous-replication-in-mysql-galera-vs-group-replication/Multi-Master vs. ...

2018-06-29 21:12:26

阅读数 1651

评论数 0

原创 MySQL高可用框架--组复制(group replication)搭建测试

一、框架搭建      1.首先备份主库数据,有两种方法,冷备份和热备份。冷备份需要先停止master服务,sudo/etc/init.d/mysql stop,然后通过cp或者scp等命令将数据文件传输到指定文件夹,这里我选择在一台服务器上启动三个实例来搭建组复制,所以就用sudo cp -R ...

2018-06-29 20:41:58

阅读数 1707

评论数 0

原创 mysql复制发展历程(从5.1到8.0版本)

       mysql5.1之前的版本网上基本上都查不到什么资料了,官网上也只有5.5之后的文档。所以就从5.1开始了解复制的发展历史。MySQL 5.1       mysql5.1版本对于复制的新特性就是引入了基于行的复制,当服务器使用混合模式复制时,基于语句的复制是默认的,在运行时会根据具...

2018-06-17 22:32:00

阅读数 1311

评论数 0

原创 主从复制的问题与解决方案

       *日志损坏。当主库日志损坏时,备库会因为读取不到目标偏移量的语句而停止,需要找出主库正常的首个语句的偏移量然后备库change master to重新定位。当备库日志损坏时通过最后执行的日志位置(execmaster log pos)找到主库对应的位置然后change master ...

2018-06-16 10:56:17

阅读数 309

评论数 0

原创 MySQL主从复制的拓扑结构

复制拓扑       *所有拓扑都应该遵循一个备库只能拥有一个主库,每个备库只能有一个server id的规则。       *一主多备。简单的拓扑,但是能够满足大部分需求:1.为不同的角色使用不同的备库。2.选用一个备库当作待用主库,以备主备切换。3.可以用于灾难恢复。4.可以将一个备库用作测试...

2018-06-16 10:55:35

阅读数 231

评论数 0

原创 高性能MySQL读书笔记--主从复制

    总的来说在复制的时候你需要做的事情:1.使用pt-table-checksum保证主备数据一致。2.监控备库延迟保证它们没有过于延迟。3.理解复制的异步本质,设计你的应用避免或者容忍从备库读取脏数据。4.不要写入超过一个服务器,把备库变为只读。5.选用对复制更安全的参数(sync mast...

2018-06-16 10:53:51

阅读数 294

评论数 0

转载 innodb下的记录锁,间隙锁,next-key锁

你需要知道的 之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。行锁 记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。生活中的间隙锁 编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。 生活中排队的场景,小明,小...

2018-06-16 00:03:38

阅读数 151

评论数 0

原创 reset master和reset slave解析

RESET MASTER 删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库,注意  reset master 不同于purge binary log的两处地方1 reset master 将...

2018-06-16 00:03:16

阅读数 151

评论数 0

转载 mysqldump的master-data和single-transaction选项解析

1 mysqldump导出数据主要有两种控制:一种是导出的全过程都加锁 lock-all-tables, 另一种则是不加。前者会在导出开始时执行 FLUSH TABLES WITH READ LOCK; 也就是加全局读锁,会阻塞其它写操作,以保证导出是一致性的;因此只有在导出测试数据时或导出时没有...

2018-06-16 00:02:12

阅读数 179

评论数 0

转载 show engine innodb status详解

转载自:http://blog.51cto.com/louisyang/1379813,修正了部分错误或者过时信息。Header这部分简单的打印,输出的时间,以及自从上次输出的间隔时间。1 =====================================2 07091310:31:48 ...

2018-06-12 10:12:14

阅读数 1520

评论数 0

转载 Spin lock(自旋锁)与mutex 的区别

转载自:https://blog.csdn.net/kyokowl/article/details/6294341POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套常用的API。线程同步(Thread Synchronization)是并行编程中非常重要的通讯手段,...

2018-06-11 21:06:06

阅读数 87

评论数 0

原创 myisam增删改查过程学习

MyISAM引擎*MyISAM引擎的索引与数据分开存储,分别存储为.MYI和.MYD。每个表只有一个MYI文件,因而该表所有的索引都存储在这个文件中,索引文件由五个部分组成:state,base,keydef,recinfo以及key blocks。state存储在文件最前面,主要的用途是标明索引...

2018-06-11 15:20:56

阅读数 390

评论数 0

原创 innodb增删改查过程解析

Innodb运行时结构*innodb引擎架构大致如下图: 可以看到主要是两部分组成,一个是许多后台线程,一个是innodb的缓存内存池。*后台线程主要包括如下:1.master thread,这是innodb最核心的一个线程,在早期的innodb版本master thread承担着脏页刷新、合并插...

2018-06-11 15:18:20

阅读数 1011

评论数 0

原创 redo&undo日志解析

redo&undo日志:redo日志大部分为物理日志,其记录时间点为缓冲中页面修改完成,但还没有刷新到硬盘的时间点(事务提交之前),即日至一定要比数据先到硬盘,聚集索引,次级索引,undo页面修改都需要记录redo日志,即可以把redo日志看成大管家,保证所有数据的完整性。undo...

2018-06-11 15:11:10

阅读数 10519

评论数 0

原创 innodb表空间存储结构

存储结构*Innodb的逻辑存储结构如图所示: 其空间管理由段,区和页构成。段包括叶子节点段,即所有索引的叶子节点都存储在这个段里,叶子节点存储数据(次级索引是主键)和键值,这可以方便管理并且减少随机io;还包括非叶子节点,存储的是指向另外节点的指针和键值;回滚段存储的是每个表的undo日志(具体...

2018-06-11 15:08:25

阅读数 747

评论数 0

原创 关于服务器碰到性能瓶颈的思考

这是我的一些想法:       当cpu出现瓶颈的时候,首先考虑从软件方面还有没有改进的余地,比如说代码算法的设计,像我写的这个avl树其实还有更好的插入和删除算法,可以用栈和循环来解决循环嵌套问题,从而减少函数栈出栈入栈的消耗;比如说计算无人机传回的两个gps location之间的直角坐标系向...

2018-06-11 10:04:02

阅读数 944

评论数 0

原创 OLTP场景服务器配置建议

当服务器出现瓶颈时,对服务器的配置参数调整往往不是优先级最高的。一般来讲优化的效果是:SQL及索引>数据库表结构>系统配置>硬件,而优化的成本却恰好反过来,此外,对于大部分参数配置,mysql默认设置已经够用,也许调整后会有一些小提升,但可能也为其他方面的...

2018-06-11 10:00:09

阅读数 318

评论数 0

原创 EXPLAIN字段详解&测试

       测试数据库来自mysql示例数据库(https://launchpad.net/test-db)。所用的表为sakila.film以及sakila.film_actor和sakila.language。表结构分别为:       CREATE TABLE `film` (  `fil...

2018-06-11 09:53:46

阅读数 1132

评论数 1

原创 高性能MySQL读书笔记--索引

本章主要介绍了索引的种类,各自的优缺点,如何设计和高效的使用索引,以及维护和修复索引使其保持正常工作状态。总的来说,就我的理解,分析一个较慢或给服务器造成较大压力的查询,可以从索引的设计是否正确(索引列的顺序,索引列的选择),索引的使用是否正确(避免单行和随机I/O,充分利用数据原生顺序避免排序,...

2018-06-11 09:42:28

阅读数 129

评论数 0

原创 avl树容器c++实现及其性能测试

这个实现有个问题就是不能用于多线程,因为avl旋转的特性一次需要锁住整棵树。话不多说直接上代码:/* Created on 2018/5/19 author:HZL * 该AVL树容器不带迭代器(偷懒),并且由于MinGW不支持SGI STL, * 故无法使用其内置的高效内存管理器alloc,...

2018-06-11 09:38:55

阅读数 805

评论数 0

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