![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 86
piriineos
这个作者很懒,什么都没留下…
展开
-
innodb表空间存储结构
存储结构*Innodb的逻辑存储结构如图所示: 其空间管理由段,区和页构成。段包括叶子节点段,即所有索引的叶子节点都存储在这个段里,叶子节点存储数据(次级索引是主键)和键值,这可以方便管理并且减少随机io;还包括非叶子节点,存储的是指向另外节点的指针和键值;回滚段存储的是每个表的undo日志(具体分析可看redo&undo日志解析)。区的大小固定为1M,不过当一个单独表空间刚申请时,仅有9...原创 2018-06-11 15:08:25 · 1264 阅读 · 0 评论 -
mysql复制发展历程(从5.1到8.0版本)
mysql5.1之前的版本网上基本上都查不到什么资料了,官网上也只有5.5之后的文档。所以就从5.1开始了解复制的发展历史。MySQL 5.1 mysql5.1版本对于复制的新特性就是引入了基于行的复制,当服务器使用混合模式复制时,基于语句的复制是默认的,在运行时会根据具体情况动态的改变binlog格式。当使用混合模式复制时,如下几种情况会从基于语句的binlog切换到基...原创 2018-06-17 22:32:00 · 2466 阅读 · 1 评论 -
MySQL高可用框架--组复制(group replication)搭建测试
一、框架搭建 1.首先备份主库数据,有两种方法,冷备份和热备份。冷备份需要先停止master服务,sudo/etc/init.d/mysql stop,然后通过cp或者scp等命令将数据文件传输到指定文件夹,这里我选择在一台服务器上启动三个实例来搭建组复制,所以就用sudo cp -R /var/lib/mysql /home/piriineos/data/mysql/data1/来复制...原创 2018-06-29 20:41:58 · 5364 阅读 · 1 评论 -
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. Master-SlaveGalera has always been multi-master by ...翻译 2018-06-29 21:12:26 · 2887 阅读 · 0 评论 -
Galera replication原理详解
转载自:http://www.gpfeng.com/?p=603这篇文章总结了之前对Galera replication的调研,内容包括Galera特性,原理,Galera cluster配置,参数及性能等Galera replication是什么MySQL DBA及开发应该都知道MySQL源生复制及semi-sync半同步复制,它们都基于MySQL binlog,原生复制是完全异步的,maste...转载 2018-06-29 21:16:25 · 7476 阅读 · 0 评论 -
高性能MySQL读书笔记--索引
本章主要介绍了索引的种类,各自的优缺点,如何设计和高效的使用索引,以及维护和修复索引使其保持正常工作状态。总的来说,就我的理解,分析一个较慢或给服务器造成较大压力的查询,可以从索引的设计是否正确(索引列的顺序,索引列的选择),索引的使用是否正确(避免单行和随机I/O,充分利用数据原生顺序避免排序,索引覆盖查询),以及查询语句设计是否正确,是否可以利用现有索引继续优化这三个方面来解决。索引类型 *B...原创 2018-06-11 09:42:28 · 324 阅读 · 0 评论 -
EXPLAIN字段详解&测试
测试数据库来自mysql示例数据库(https://launchpad.net/test-db)。所用的表为sakila.film以及sakila.film_actor和sakila.language。表结构分别为: CREATE TABLE `film` ( `film_id` smallint(5) unsigned NOT NULLAUTO_INCREMENT, ...原创 2018-06-11 09:53:46 · 3389 阅读 · 3 评论 -
OLTP场景服务器配置建议
当服务器出现瓶颈时,对服务器的配置参数调整往往不是优先级最高的。一般来讲优化的效果是:SQL及索引>数据库表结构>系统配置>硬件,而优化的成本却恰好反过来,此外,对于大部分参数配置,mysql默认设置已经够用,也许调整后会有一些小提升,但可能也为其他方面的问题埋下隐患,因而服务器参数配置的一个原则应该是如果非必要,尽量不要随便调整参数。对于OLTP场景,一般是高并发,事务提交要求...原创 2018-06-11 10:00:09 · 1079 阅读 · 0 评论 -
关于服务器碰到性能瓶颈的思考
这是我的一些想法: 当cpu出现瓶颈的时候,首先考虑从软件方面还有没有改进的余地,比如说代码算法的设计,像我写的这个avl树其实还有更好的插入和删除算法,可以用栈和循环来解决循环嵌套问题,从而减少函数栈出栈入栈的消耗;比如说计算无人机传回的两个gps location之间的直角坐标系向量,可以通过近似Δx = (x1.longitude-x2.longitude)*pi/180*α来计...原创 2018-06-11 10:04:02 · 2043 阅读 · 0 评论 -
主从复制的问题与解决方案
*日志损坏。当主库日志损坏时,备库会因为读取不到目标偏移量的语句而停止,需要找出主库正常的首个语句的偏移量然后备库change master to重新定位。当备库日志损坏时通过最后执行的日志位置(execmaster log pos)找到主库对应的位置然后change master to重新定位。 日志损坏的类型:1.数据改变,但sql仍然有效,这种损坏不容易找出来,不过...原创 2018-06-16 10:56:17 · 782 阅读 · 0 评论 -
MySQL主从复制的拓扑结构
复制拓扑 *所有拓扑都应该遵循一个备库只能拥有一个主库,每个备库只能有一个server id的规则。 *一主多备。简单的拓扑,但是能够满足大部分需求:1.为不同的角色使用不同的备库。2.选用一个备库当作待用主库,以备主备切换。3.可以用于灾难恢复。4.可以将一个备库用作测试。对于这种结构需要关注多个备库的延迟,对于延迟特别严重的需要进行一些处理。另外就是虽然多个备库可以缓解...原创 2018-06-16 10:55:35 · 447 阅读 · 0 评论 -
redo&undo日志解析
redo&undo日志:redo日志大部分为物理日志,其记录时间点为缓冲中页面修改完成,但还没有刷新到硬盘的时间点(事务提交之前),即日至一定要比数据先到硬盘,聚集索引,次级索引,undo页面修改都需要记录redo日志,即可以把redo日志看成大管家,保证所有数据的完整性。undo日志基本是逻辑日志,其记录时间点为修改缓冲中页面之前(先于redo日志,这样redo日志可以记录undo页面的...原创 2018-06-11 15:11:10 · 22003 阅读 · 0 评论 -
innodb增删改查过程解析
Innodb运行时结构*innodb引擎架构大致如下图: 可以看到主要是两部分组成,一个是许多后台线程,一个是innodb的缓存内存池。*后台线程主要包括如下:1.master thread,这是innodb最核心的一个线程,在早期的innodb版本master thread承担着脏页刷新、合并插入缓冲、刷新redo日志、回收undo日志等作用,在之后的版本用page cleaner thread...原创 2018-06-11 15:18:20 · 1935 阅读 · 0 评论 -
myisam增删改查过程学习
MyISAM引擎*MyISAM引擎的索引与数据分开存储,分别存储为.MYI和.MYD。每个表只有一个MYI文件,因而该表所有的索引都存储在这个文件中,索引文件由五个部分组成:state,base,keydef,recinfo以及key blocks。state存储在文件最前面,主要的用途是标明索引文件的状态,比如包括几个索引,其根指针为多少,当前索引文件大小等。其中一些重要的参数如下:option...原创 2018-06-11 15:20:56 · 748 阅读 · 0 评论 -
show engine innodb status详解
转载自:http://blog.51cto.com/louisyang/1379813,修正了部分错误或者过时信息。Header这部分简单的打印,输出的时间,以及自从上次输出的间隔时间。1 =====================================2 07091310:31:48 INNODB MONITOR OUTPUT3 ============================...转载 2018-06-12 10:12:14 · 2582 阅读 · 0 评论 -
innodb下的记录锁,间隙锁,next-key锁
你需要知道的 之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。行锁 记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。生活中的间隙锁 编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。 生活中排队的场景,小明,小红,小花三个人依次站成一排,此时,如何让新来的小刚不能站在小红旁边,这时候只要将小红和她前面的小明之间...转载 2018-06-16 00:03:38 · 254 阅读 · 0 评论 -
mysqldump的master-data和single-transaction选项解析
1 mysqldump导出数据主要有两种控制:一种是导出的全过程都加锁 lock-all-tables, 另一种则是不加。前者会在导出开始时执行 FLUSH TABLES WITH READ LOCK; 也就是加全局读锁,会阻塞其它写操作,以保证导出是一致性的;因此只有在导出测试数据时或导出时没有业务连接操作时可不加 lock-all-tables .至于说一致性导出的另一种方式 single-t...转载 2018-06-16 00:02:12 · 686 阅读 · 0 评论 -
reset master和reset slave解析
RESET MASTER 删除所有index file 中记录的所有binlog 文件,将日志索引文件清空,创建一个新的日志文件,这个命令通常仅仅用于第一次用于搭建主从关系的时的主库,注意 reset master 不同于purge binary log的两处地方1 reset master 将删除日志索引文件中记录的所有binlog文件,创建一个新的日志文件 起始值从000001 开始,然而p...原创 2018-06-16 00:03:16 · 594 阅读 · 0 评论 -
高性能MySQL读书笔记--主从复制
总的来说在复制的时候你需要做的事情:1.使用pt-table-checksum保证主备数据一致。2.监控备库延迟保证它们没有过于延迟。3.理解复制的异步本质,设计你的应用避免或者容忍从备库读取脏数据。4.不要写入超过一个服务器,把备库变为只读。5.选用对复制更安全的参数(sync master info等)。你可以带着疑问读下面的文章。复制概述 *mysql支持两种复制方式:基...原创 2018-06-16 10:53:51 · 480 阅读 · 0 评论 -
InnoDB MVCC解析
innodb的多版本控制主要是依靠readview+undo log实现的,其中readview为事务当前系统的可见性视图,即当前时刻的事务系统trx_sys快照,通过readview来判断记录对当前事务的可见性;undo log以链表的形式按新旧顺序存储一行记录的历史数据。下面分别解析readview和undo log原理。Readviewinnodb中的插入、修改或者删除操作总是直...原创 2019-03-25 23:19:32 · 751 阅读 · 0 评论