MySQL自适应哈希索引
一、什么是自适应哈希索引?自适应哈希索引 是 InnoDB 在内存中基于 B+Tree 索引的常用搜索模式,自动创建并维护的一个哈希索引,可以理解为索引的索引。它使用哈希表数据结构。对于等值查询,哈希表的查询时间复杂度是 O(1),而 B+Tree 是 O(log n)。因此正常情况下,它的速度会更优,并且仅支持等值查询,范围、模糊、排序场景仍走原 B+ 树 关键点:自适应: 哈希索引不是由 DB
MySQL5.7并行复制演变之路
本文介绍下MySQL 5.7中针对主从并行复制的演变过程,首先MySQL主从延迟是一个永远都无法彻底解决的问题,我们只能通过优化参数来减小延迟,其中一个大的问题是主库可以并发执行事务,但是从库无法完全按着主库的并发度来并行复制,好在MySQL官方也在不断优化主从复制的逻辑,旨在提高从库并行复制的粒度,首先MySQL 5.6支持库级别的并行复制,MySQL 5.7 开始支持基于组提交的COMMIT_
mysql如何保证主从一致性
MySQL主从架构故障切换,如何保证数据一致性?或者说如何最大化的保证数据不丢失?可以通过那些配置来提升一致性?dba都知道我们需要设置增强半同步(after_sync)来保证数据一致性,那只设置半同步就可以了吗?一、先看下事务执行流程(AFTER_SYNC半同步模式)1、客户端发起事务:客户端执行 SQL 语句并提交事务,注意只是进入两阶段的提交阶段,但是并没有提交成功,但是binlog已经写完
MySQL大结果集的优化思路
一、场景:MySQL有个一个大查询,需要返回很大的一个数据量,例如返回20g的结果集数据,针对这个场景该怎么从DB和OS参数层面优化呢?二、MySQL数据库查询结果数据发送流程:首先,服务端并不需要保存一个完整的结果集。取数据和发数据的流程是这样的:获取一行,写到 net_buffer 中。这块内存的大小是由参数 net_buffer_length 定义的,默认是 16k。重复获取行,直到 net
MySQL优化器参数prefer_ordering_index优化理念
一、关于order by limit n的优化示例表结构如下:root@localhost : monitor_connect 22:26:45>show create table monitor_oracle_info\G*************************** 1. row ***************************Table: moni
innodb_autoinc_lock_mode参数解读
mysql 5.1.22引进innodb_autoinc_lock_mode参数,优化了自增锁的性能,提高了MySQL使用的便捷性和可配置性,用户可以结合业务场景合理设置自增锁参数,更方便便捷;1、innodb_autoinc_lock_mode=0:In this lock mode, all “INSERT-like” statements obtain a special table-lev
mgr参数-group_replication_auto_increment_increment
一、官方介绍group_replication_auto_increment_increment参数表示:当mgr开启多主模式的时候,控制自增的跨度,避免为组成员上的写入选择重复的自动增量值,这会导致事务回滚;当在服务器实例上启动组复制时,服务器系统变量auto_increment_increment的值将更改为该值,而服务器系统变量auto_increment_offset的值将改为server
mgr参数-group_replication_recovery_get_public_key
mgr参数group_replication_recovery_get_public_key和group_replication_recovery_get_public_key的介绍:这俩参数生效的前提是:1)group_replication_recovery_use_ssl=off如下所示group_replication_recovery通道没有开启SSLCHANGE MASTER TO M
mgr参数-group_replication_recovery_compression_algorithms
一、官方介绍:The value of this system variable can be changed while Group Replication is running, but the change only takes effect after you stop and restart Group Replication on the group member.此系统变量的值可以在
mgr-核心参数-group_replication_transaction_size_limit
一、官方文档解释:This system variable should have the same value on all group members. The value of this system variable can be changed while Group Replication is running. The change takes effect immediately
MGR参数介绍-group_replication_poll_spin_loops
一、官方介绍:参数修改方式:此系统变量的值可以在组复制运行时更改,但只有在停止并重新启动组成员上的组复制后,更改才会生效。group_replication_poll_spin_loops specifies the number of times the group communication thread waits for the communication engine mutex to
mgr核心参数-group_replication_message_cache_size
一、参数修改规则:This system variable should have the same value on all group members. The value of this system variable can be changed while Group Replication is running. The change takes effect on each grou
mgr参数之-group_replication_gtid_assignment_block_size小结
一、官方文档解释:This system variable is a group-wide configuration setting,and a full reboot of the replication group is required for a change to take effectgroup_replication_gtid_assignment_block_size
mgr参数解读-group_replication_group_seeds和group_replication_local_address
一、group_replication_group_seeds此系统变量的值可以在组复制运行时更改,但只有在停止并重新启动组成员上的组复制后,更改才会生效。group_replication_group_seeds是加入成员可以连接到的组成员的列表,以获取所有当前组成员的详细信息。加入成员使用这些详细信息来选择并连接到组成员,以获得与组同步所需的数据。该列表由每个包含的种子成员的单个内部网络地址或
mgr流控参数介绍
前言:涉及到mgr集群flow control的参数如下,默认值如下所示:group_replication_flow_control_applier_threshold | 25000 &n
mgr关键参数-group_replication_consistency
group_replication_consistencygroup_replication_consistency是MySQL 8.0.14为解决MGR中一致性读提供的参数,可以在全局或单个事务中进行配置。分为以下5种可选值:官方文档解释:当组复制正在运行时,可以更改此系统变量的值。group_replication_consistency是一个服务器系统变量,而不是特定于组复制插件的变量,因此
proxysql实现mysql mgr以及主从多套集群的读写分离
本文共三部分:一、关于proxysql集群搭建;二、关于proxysql配置mgr集群以及主从读写分离的配置;三、关于proxysql的权限控制;一、proxysql集群搭建https://proxysql.com/documentation/ ----参考官方文档,有具体的安装和配置1、下载proxysql,如下三个地址都可以下载https:
mysql用户本地登录localhost和127.0.0.1区别
今天某个通过ansible给某个机器安装上mysql_exporter,然后无法采集到mysql的信息,登录到mysql服务器,发现是自动创建的zabbix_monitor@127.0.0.1账号,无法登录,然后做了如下的测试:mysql -uzabbix_monitor -p'**********' -h127.0.0.1 ------无法登录mysql
MySQL半同步使用注意事项
最近遇到了一个关于半同步的问题,刚搭建的半同步数据库实例,执行第一个sql的时候,从库延迟太长,原因是从库开启了参数rpl_semi_sync_master_enabled=on,同时设置的rpl_semi_sync_master_timeout为30分钟,接下来说下半同步使用注意事项以及该问题的具体原因,一、开启半同步:必须主从库都得设置对应的参数!具体如下所示:主库:set global rp
关于MySQL中某个操作影响行数为0的理解
我们创建了一个简单的表 t,并插入一行,然后对这一行做修改。mysql> CREATE TABLE `t` (`id` int(11) NOT NULL primary key auto_increment,`a` int(11) DEFAULT NULL) ENGINE=InnoDB;insert into t values(1,2);这时候,表 t 里有唯一的一行数据 (1,2)。假设,