为了控制这个新的行为(从库上数据回放顺序),可新增选项 "binlog_transaction_dependency_tracking”,它可以取以下三个值: COMMIT_ORDER:默认值,它使用 关于持久性设置,除了将 innodb_flush_log_at_trx_commit 设置为 2 ,其他均保留默认值(所以,sync_binlog=1 —— 这是 MySQL 8.0 中的新默认值,启用 这里有两个注意事项: 1、这个特性是向后兼容的,所以 5.7 的从库也能从中获益; 2、请注意 MySQL 8.0 依然是 beta 版本,我们不鼓励您在生产环境中使用测试版,尽管你非常需要这些新功能。 MySQL 复制的其他变化 除了最有趣的 writesets 新特性,MySQL 8.0 中关于 MySQL 复制的其他变化也是值得关注的。我们来看看其他的一些重要变化。 到目前为止,所有 8.0 版本都添加了这些特性。
PHP8.0 目前php8.0还在测试阶段.正式版大概12月份出来.先来看一下新版本的改进或新特性. 1. User(); get_class($user); 新版本 class User { } $user = new User(); $className = $user::class; 2. == false){ echo "Found"; } // 2. ; if (str_contains($str,"world")){ echo 'Found'; } // 2.
MySQL 8.0 实现了Index skip scan,翻译过来就是索引跳跃扫描。熟悉ORACLE的朋友是不是发现越来越像ORACLE了? *考虑以下的场景: 表t1有一个联合索引idx_u1(rank1,rank2),但是查询的时候却没有rank1这列,只有rank2。 比如,select * from t1 where rank2 = 30。 那以前遇到这样的情况,如果没有针对rank2这列单独建立普通索引,这条SQL怎么着都是走的FULL TABLE SCAN。 rank2 > 400union allselect * from t1 where rank1 = 5 and rank2 > 400; 可以看出来,MySQL其实内部自己把左边的列做了一次DISTINCT 那这样的场景就必须给rank2加一个单独索引了。 ? 那来总结下 ISS 就是一句话:ISS 其实就是MySQL 8.0推出的适合联合索引左边列唯一值较少的情况的一种优化策略。
---- 本文关键字:memcached 相关推荐文章: 新特性解读 | 趋近完美的 Undo 空间 新特性解读 | 8.0 新增 DML 语句(TABLE & VALUES) 一款优秀的缓存系统 memcache MySQL 8.0 —— 新增特性 MySQL 8.0 发布后,又在功能上给 memcached api 增加了两个新特性。 1. 演示 下面我们来演示下这两个新的特性,先把 memcached api 插件以及需要的示例表数据准备好。 1. /usr/share/mysql-8.0/innodb_memcached_config.sql Query OK, 1 row affected (0.05 sec) 2. 总结 本篇介绍了 MySQL memcached api 使用场景以及在 MySQL 8.0 下新特性使用例子,希望对大家有帮助。
为了控制这个新的行为(从库上数据回放顺序),可新增选项"binlog_transaction_dependency_tracking”,它可以取以下三个值: COMMIT_ORDER:默认值,它使用 MySQL 关于持久性设置,除了将innodb_flush_log_at_trx_commit 设置为 2 ,其他均保留默认值(所以,sync_binlog=1 —— 这是 MySQL 8.0 中的新默认值,启用 这里有两个注意事项: 1、这个特性是向后兼容的,所以 5.7 的从库也能从中获益; 2、请注意 MySQL 8.0 依然是 beta 版本,我们不鼓励您在生产环境中使用测试版,尽管你非常需要这些新功能。 MySQL 复制的其他变化 除了最有趣的 writesets 新特性,MySQL 8.0 中关于 MySQL 复制的其他变化也是值得关注的。我们来看看其他的一些重要变化。 到目前为止,所有 8.0 版本都添加了这些特性。
2. 从机由于异常,无法恢复正常;或者恢复正常了,发现数据和主机有差异,必须要重做从机,恢复主从关系。 3. 那接下来来看看 MySQL 8.0.19 中 MySQL Shell 新特性:副本集以及管理。 二、副本集 副本集也就是极度简化了对 MySQL 主从的相关管理操作。 用同样的方法添加实例 C MySQL ytt-pc:40100+ ssl JS > c1.addInstance('ytt@ytt-pc:4012') 接下来看看新的主从状态,此时 ytt-pc:4010 查看新状态,4012 为新的主机,4011 和 4010 为从机 MySQL ytt-pc:40100+ ssl JS > c1.status() { "replicaSet": { 三、总结 这篇介绍了 MySQL Shell 的新特性,管理 MySQL 主从复制,可以看到比传统的方式要简单的多。
之前的文章中分别介绍了MySQL 8.0在索引方面的新特性--隐藏索引 和 降序索引,详细内容可查看之前的文章内容; 在MySQL之前版本中,一直不支持函数索引,这也是被不少人诟病的一点;虽然可以通过generated + col2)); CREATE INDEX idx2 ON t1 ((col1 + col2), (col1 - col2), col1); ALTER TABLE t1 ADD INDEX ((col1 但是这种方法带来了一个新的使用上的问题: CAST() 函数返回的字符串使用 utf8mb4_0900_ai_ci 排序规则(服务器默认设置)。 中,引入了不可见索引、降序索引、函数索引的新特性,索引方面功能也是趋于完善。 所以,大家还是尽快升级到8.0吧。
前言 MySQL 的主从同步应该是被各个 DBA 熟知的技术了,从 MySQL 3.23.15 开始一直迭代改进到 8.0 版本。 经过这么多年的改进,目前 8.0 提供的复制技术是最新的 WriteSet 机制,这个功能也被合并到了 5.7.21 版本,解决了 5.7 并行复制的一些问题。 复制的发展与瓶颈 基本原理 [复制原理] MySQL 复制的基本原理是比较简单和清晰的:Slave 节点中的 IO Thread 从 Master 的 binlog dump 新的内容到 Slave 本地的 WriteSet 复制,8.0 及 5.7.21 之后 WriteSet 实际上是事务冲突检测机制的称呼,通过对事务中受影响的行进行 Hash,然后和 History 中的 WriteSet result 每一个方块代表这个事务内受影响行的范围,T1~T8 代表事务执行的顺序,从方块代表的范围来看,可以看到 T4 和 T3 存在重叠,意味着这两个事务的 Hash 计算结果中会发现冲突,因此会从 T4 开始,开启一个新的事务组
MySQL 8.0 支持隐藏索引(invisible index),也称为不可见索引。隐藏索引不会被优化器使用。 k_idx (k) INVISIBLE; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 不可见索引特性可以用于测试删除某个索引对于查询性能的影响 慢查询日志中出现了新的查询语句。 系统变量 optimizer_switch 的 use_invisible_indexes 值控制了优化器构建执行计划时是否使用隐藏索引。 可能会有这样的情况: 我们可以创建一个新的隐形索引,但如果想要测试它,必须使它可见。这意味着所有对应用程序有即时影响的查询都将能够使用它。 参考链接 https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
前言 在最新的8.0版本中,MySQL在用户管理这一块,也是引入了很多新特性,包括操作系统认证、用户分类、新的权限、角色等等,接下来我们就看一看。 用户管理 操作系统认证 在Oracle、DB2、SQL Server这些传统的商业数据库中,都包括了两种认证方式,一种是操作系统身份认证,另一种是数据库身份认证。 在MySQL之前的版本中,仅仅只支持数据库身份认证方式,即通过数据库的用户名和密码进行登录;不过,在最新的8.0版本中,MySQL也引入了操作系统身份认证。 | +----------------+ | test@localhost | +----------------+ 1 row in set (0.00 sec) 系统用户与普通用户 在MySQL 8.0 权限管理 在MySQL 8.0中,引入了很多新的权限,进一步实现了权限的精细化管理,具体包括如下: (1)CREATE ROLE:创建角色的权限 (2)DROP ROLE:删除角色的权限 (3)APPLICATION_PASSWORD_ADMIN
试图删除t1,t2两张表,在5.7中,执行报错,但是t1表被删除,在8.0中执行报错,但是t1表没有被删除,证明了8.0 DDL操作的原子性,要么全部成功,要么回滚。 参数修改持久化 MySQL 8.0版本支持在线修改全局参数并持久化,通过加上PERSIST关键字,可以将修改的参数持久化到新的配置文件(mysqld-auto.cnf)中,重启MySQL时,可以从该配置文件获取到最新的配置参数 8.0可以看到,c2字段降序。 set (0.00 sec) # MySQL 8.0 mysql> create table t1(c1 int,c2 int,index idx_c1_c2(c1,c2 desc)); Query JSON特性增强 MySQL 8 大幅改进了对 JSON 的支持,添加了基于路径查询参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据分别组合到 JSON 数组和对象中的
一、MySQL 8.0中添加的功能 1、新的系统字典表 整合了存储有关数据库对象信息的事务数据字典,所有的元数据都用InnoDB引擎进行存储 2、支持DDL 原子操作 InnoDB表的DDL支持事务完整性 最小值2确保回滚段始终在撤消表空间中创建,而不是在系统表空间中创建 支持 ALTER TABLESPACE ... innodb_deadlock_detect,用来禁用死锁检查,因为在高并发系统中,当大量线程等待同一个锁时,死锁检查会大大拖慢数据库 支持使用innodb_directories选项在服务器脱机时将表空间文件移动或恢复到新位置 ,通过加上PERSIST关键字,可以将调整持久化到新的配置文件中,再次重启db还可以应用到最新的参数。 二、MySQL 8.0中被废弃的特性 废弃validate_password 插件 废弃ALTER TABLESPACE和DROP TABLESPACE ENGINE子句 废弃JSON_MERGE()
上两篇文章分别介绍了MySQL8.0的相关的新特性《MySQL 8.0新特性:隐藏索引》和《MySQL 8.0新特性:隐藏字段》,本文继续介绍MySQL8.0的另一个相关的新特定性--降序索引;本文通过 5.7和8.0进行对比说明; MySQL从8.0开始终于支持真正的降序索引了,实际上,在以前的版本当中,语法上可以通过desc来指定索引为降序,但实际上创建的仍然是常规的升序索引。 ORDER BY c1 DESC, c2 ASC -- optimizer can use idx3 不再对group by进行隐式排序 由于降序索引的引入,MySQL 8.0再也不会对group 可见,MySQL 8.0对于group by操作确实不再进行隐式排序。从5.7升级到8.0,依赖group by隐式排序的业务可要小心咯。 -8-0-labs-descending-indexes-in-mysql/ 相关阅读 MySQL 8.0新特性:隐藏字段 MySQL 8.0新特性:隐藏索引
前言 相信大家都知道,索引是有序的;不过,在MySQL之前版本中,只支持升序索引,不支持降序索引,这会带来一些问题;在最新的MySQL 8.0版本中,终于引入了降序索引,接下来我们就来看一看。 1000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci MAX_ROWS=1000000 1 row in set (0.00 sec) (2) --------------+ 1 row in set, 1 warning (0.00 sec) (4)创建降序索引 mysql> alter table sbtest1 add index k_2( --+------+----------+-------+ | 1 | SIMPLE | sbtest1 | NULL | index | NULL | k_2 ----------+---------+------+------+----------+-------+ 1 row in set, 1 warning (0.00 sec) 总结 MySQL 8.0
MySQL 8.0 推出了histogram,也叫柱状图或者直方图。先来解释下什么叫直方图。 ******* Table: t2Create Table: CREATE TABLE `t2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `rank1 > create table t3 like t2;Query OK, 0 rows affected (0.13 sec) mysql> insert into t3 select * from t2 `t2`. `t2`.
InnoDB ReplicaSet在 MySQL 8.0.19 版本之后开始支持;本文将针对 InnoDB ReplicaSet这一新特性做一些测试,包括环境部署,在线主从切换、故障切换等; 一、 您可以使用ReplicaSet对象和AdminAPI操作,例如检查InnoDB ReplicaSet的状态,并在发生故障时手动故障转移到新的主数据库。 8.0.23实例 关于MySQL实例的部署这里不做太多介绍,这里我们部署三个测试实例,端口分别是8401、8402、8403 三、部署InnoDB ReplicaSet 仅支持要求运行MySQL 8.0 | | v2_gr_clusters | | v2_instances | | v2_router_rest_accounts ONLINE" } }, "type": "ASYNC" } } 小结 1、InnoDB ReplicaSet 当前还不完善,可作为新特性在测试环境试用
上一篇介绍了MySQL8.0新特性之隐藏索引《MySQL 8.0新特性:隐藏索引》,这篇文章主要给大家介绍了关于MySQL 8.0新特性之隐藏字段; MySQL 8.0.23 版本增加了一个新的功能:隐藏字段 如果使用CREATE TABLE … LIKE语句复制表结构,将会复制原表中的隐藏字段,而且它们在新表中仍然是隐藏字段。 尽管如此,即使包含了原表中的隐藏字段,新表中的这些字段将会变成可见字段。 准确来说,如果某个新的数据行和已有数据行的唯一键字段值相同,无论索引字段是否可见,都会使用以下处理方式: 如果指定了 IGNORE 修饰符,INSERT、LOAD DATA 以及 LOAD XML 都会忽略新的数据行 参考链接 https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html
前言 在MySQL之前版本中,一直不支持函数索引,这也是被不少人诟病的一点;虽然可以通过generated column实现类似功能,但始终是不太方便;不过,在最新的MySQL 8.0版本中,终于引入了函数索引 (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec) (2) 外键不支持函数索引 (4)空间索引和全文索引不支持函数索引 (5)函数索引不能直接使用列前缀,可以通过SUBSTRING()和CAST()来替代 (6)在删除列之前,要先删除相关的函数索引 总结 在MySQL 8.0 中,引入了不可见索引、降序索引、函数索引的新特性,索引方面功能也是趋于完善。 所以,大家还是尽快升级到8.0吧。
额外连接 在MySQL 8.0版本中,在当前连接数达到最大连接数时,服务端允许1个额外连接,可以让具有CONNECTION_ADMIN权限的用户连接进来,下面简单测试一下。 (1)为了方便测试,先调整最大连接数 mysql> set global max_connections=3; Query OK, 0 rows affected (0.00 sec) (2)多开几个会话 因此,在MySQL 8.0.14版本中,又推出了一个非常重要的新特性——管理端口;它允许具有SERVICE_CONNECTION_ADMIN权限的用户,通过特定的IP和PORT连接上来,且没有连接数限制 (1)先介绍下相关参数 admin_address:监听IP地址 admin_port:监听端口 create_admin_listener_thread:是否创建一个单独的线程来监听管理连接 (2)通过配置上述参数 --------+ | admin_address | 127.0.0.1 | | admin_port | 33062 | +---------------+-----------+ 2
前言 在MySQL 8.0中,引入了一个轻量级的备份锁,这个锁可以保证备份一致性,而且阻塞的操作相对比较少,是一个非常重要的新特性,接下来我们就来了解一下。 Oracle官方团队当然也意识到了这个问题,并在MySQL 8.0中提供了新的解决方案,让我们接着往下看。 随着备份锁的引入,Oracle官方备份工具MEB 8.0和Percona开源备份工具XtraBackup 8.0,也是更新了对backup lock的支持,具体参考如下: MEB 8.0:https:/ /docs.oracle.com/cd/E17952_01/mysql-enterprise-backup-8.0-en/mysqlbackup.backup.html XtraBackup 8.0:https ://www.percona.com/doc/percona-server/8.0/management/backup_locks.html 总结 备份锁,还是一个非常实用的新特性,可以解决非常多的日常生产问题