关于mysql-8.0:MySQL-80-新密码策略的细节补充

前情提要MySQL 8.0 截⽌到⽬前曾经公布到了 8.0.34 版本,通过一系列的版本更新,对于明码方面也做了较多的增强⼯作,这⾥咱们不再过多介绍 MySQL 8.0 对于明码性能的增强,相干的介绍能够移步先前公众号的⽂章。 新个性解读 | MySQL 8.0 新密码策略(上) 新个性解读 | MySQL 8.0 新密码策略(中) 新个性解读 | MySQL 8.0 新密码策略(下) 新个性解读 | MySQL 8.0 新密码策略(终篇) 文章背景这篇文章次要针对明码相干的几个参数的应用细节做一些验证和剖析,给大家分享下理论应用的教训,首先咱们看下 MySQL 8.0 版本的 CREATE USER 语法中 password_option 局部的语法结构。 -- MySQL 8.0(新增了不同维度的明码管制)password_option: {PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]| PASSWORD HISTORY {DEFAULT | N}| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]| FAILED_LOGIN_ATTEMPTS N| PASSWORD_LOCK_TIME {N | UNBOUNDED}}-- MySQL 5.7(只蕴含明码过期属性配置)password_option: {PASSWORD EXPIRE| PASSWORD EXPIRE DEFAULT| PASSWORD EXPIRE NEVER| PASSWORD EXPIRE INTERVAL N DAY}其中 MySQL 8.0 版本 CREATE USER 语法的前 4 个明码属性则是本⽂第⼀个探讨的细节点,其属性对应的 MySQL 全局参数及含意别离为: ...

September 12, 2023 · 1 min · jiezi

关于mysql-8.0:MySQL-8-的复制可观测性

本文解说了 MySQL 8 在复制观测性上带来更丰盛的观测信息。 作者:Frederic Descamps MySQL 社区经理 本文起源:Oracle MySQL 官网博客 爱可生开源社区出品。许多经验丰富的 MySQL DBA 都应用过 SHOW REPLICA STATUS 输入中的 Seconds_Behind_Source 来判断(异步)复制的运行状态。 留神:这里应用新的术语 REPLICA。我置信所有人都应用过旧的术语。然而,MySQL 复制机制曾经有很大提高,复制性能团队也做了很多工作,可能为 MySQL 中所有可用的复制模式提供的更丰盛观测信息。 例如,咱们减少了并行复制,组复制等,然而这些信息都无奈从原来的 SHOW REPLICA STATUS 输入中看到。 零碎库 Performance_Schema 提供了比 SHOW REPLICA STATUS 更好的监控和察看复制过程的形式。 以后,Performance_Schema 中有 15 张表用于记录复制信息量化: +------------------------------------------------------+| Tables_in_performance_schema (replication%) |+------------------------------------------------------+| replication_applier_configuration || replication_applier_filters || replication_applier_global_filters || replication_applier_status || replication_applier_status_by_coordinator || replication_applier_status_by_worker || replication_asynchronous_connection_failover || replication_asynchronous_connection_failover_managed || replication_connection_configuration || replication_connection_status || replication_group_communication_information || replication_group_configuration_version || replication_group_member_actions || replication_group_member_stats || replication_group_members |+------------------------------------------------------+15 rows in set (0.0038 sec)但不容置疑,了解这些指标的含意并找出对咱们 MySQL DBA 真正有意义的信息也不总是那么容易:例如,正本与数据源是否有提早? ...

September 4, 2023 · 7 min · jiezi

关于mysql-8.0:技术分享-可能是目前最全的-MySQL-80-新特性解读下

作者:马文斌 MySQL爱好者,任职于蓝月亮(中国)有限公司。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 上一篇次要讲了第一局部:性能加强,感兴趣的亲请点击【可能是史上最全的 MySQL 8.0 新个性解读(上)】,这一篇咱们持续: 二、性能晋升2.1-基于竞争感知的事务调度MySQL 在 8.0.3 版本引入了新的事务调度算法,基于竞争感知的事务调度,Contention-Aware Transaction Scheduling,简称CATS。在CATS算法之前,MySQL应用FIFO算法,先到的事务先取得锁,如果产生锁期待,则依照FIFO算法进行排队。CATS相比FIFO更加简单,也更加聪慧,在高负载、高争用的场景下,性能晋升显著。 2.2-基于WriteSet的并行复制总的来说MySQL对于并行复制到目前为止经验过三个比拟要害的工夫结点“库间并发”,“组提交”,“写汇合”;真堪称是江山代有人才出,前浪死在沙滩上;总的来说就前面的比后面的不晓得高到哪里去了! MySQL 8.0 版本引入了一个新的机制 WriteSet,来追踪事务之间的依赖性,这个个性被用于优化从库利用binlog的速度,在主库并发较低的场景下,可能显著进步从库回放binlog的速度,基于WriteSet 的并行复制计划,彻底解决了MySQL复制提早问题。只须要设置这2个参数即可 binlog_transaction_dependency_tracking = WRITESET # COMMIT_ORDER transaction_write_set_extraction = XXHASH642.3-JSON个性加强MySQL 8 大幅改良了对 JSON 的反对,增加了基于门路查问参数从 JSON 字段中抽取数据的 JSON_EXTRACT() 函数,以及用于将数据别离组合到 JSON 数组和对象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函数。 在主从复制中,新增参数 binlog_row_value_options,管制JSON数据的传输方式,容许对于Json类型局部批改,在binlog中只记录批改的局部,缩小json大数据在只有大量批改的状况下,对资源的占用。 2.4-空间数据类型加强MySQL 8 大幅改良了空间数据类型和函数,反对更多的空间剖析函数和空间类型对象,空间剖析性能和性能失去大幅晋升。 2.5-doublewrite改良在MySQL 8.0.20 版本之前,doublewrite 存储区位于零碎表空间,从 8.0.20 版本开始,doublewrite 有本人独立的表空间文件,这种变更,可能升高doublewrite的写入提早,减少吞吐量,为设置doublewrite文件的寄存地位提供了更高的灵活性。 2.6-hash joinMySQL 8.0.18 版本引入 hash join 性能,对于没有走索引的等值 join 连贯能够应用 hash join 进行优化。8.0.20 版本对 hash join 进行了增强,即便 join 连贯没有应用等值条件也能够应用 hash join 优化,原来应用 BNL 算法的 join 连贯将全副由 hash join 代替。 ...

March 23, 2023 · 2 min · jiezi

关于mysql-8.0:技术分享-可能是目前最全的-MySQL-80-新特性解读上

作者:马文斌 MySQL爱好者,任职于蓝月亮(中国)有限公司。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 一、性能加强1.1-所有零碎表更换为InnoDB引擎零碎表全副换成事务型的innodb表,默认的MySQL实例将不蕴含任何MyISAM表,除非手动创立MyISAM表。 1.2-DDL原子化InnoDB表的DDL反对事务完整性,要么胜利要么回滚,将DDL操作回滚日志写入到data dictionary 数据字典表 mysql.innodb_ddl_log 中用于回滚操作,该表是暗藏的表,通过show tables无奈看到。通过设置参数,可将ddl操作日志打印输出到mysql谬误日志中。 mysql> set global log_error_verbosity=3;mysql> set global innodb_print_ddl_logs=1;1.3-DDL秒加列只有在 MySQL 8.0.12 以上的版本才反对 mysql> show create table sbtest1; CREATE TABLE `sbtest1` ( `id` int NOT NULL AUTO_INCREMENT, `k` int NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', `d` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `k_1` (`k`)) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec)mysql> alter table sbtest1 drop column d ;Query OK, 0 rows affected (0.05 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> mysql> insert into sbtest1(k,c,pad) select k,c,pad from sbtest1;Query OK, 1000000 rows affected (19.61 sec)Records: 1000000 Duplicates: 0 Warnings: 0mysql> insert into sbtest1(k,c,pad) select k,c,pad from sbtest1;Query OK, 2000000 rows affected (38.25 sec)Records: 2000000 Duplicates: 0 Warnings: 0mysql> insert into sbtest1(k,c,pad) select k,c,pad from sbtest1;Query OK, 4000000 rows affected (1 min 14.51 sec)Records: 4000000 Duplicates: 0 Warnings: 0mysql> select count(*) from sbtest1;+----------+| count(*) |+----------+| 8000000 |+----------+1 row in set (0.31 sec)mysql> alter table sbtest1 add column d int not null default 0;Query OK, 0 rows affected (1.22 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> alter table sbtest1 add column e int not null default 0;Query OK, 0 rows affected (0.03 sec)Records: 0 Duplicates: 0 Warnings: 01.4-专用表表达式(CTE:Common Table Expression)CTE(Common Table Expression)能够认为是派生表(derived table)的代替,在肯定水平上,CTE简化了简单的join查问和子查问,另外CTE能够很不便地实现递归查问,进步了SQL的可读性和执行性能。CTE是ANSI SQL 99规范的一部分,在MySQL 8.0.1版本被引入。 ...

March 23, 2023 · 5 min · jiezi