前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MYSQL 8 的参数到底 UP DOWN 了那些

MYSQL 8 的参数到底 UP DOWN 了那些

作者头像
AustinDatabases
发布2019-12-16 19:27:29
7680
发布2019-12-16 19:27:29
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

mysql8 是早早晚晚都的上的版本,早上会让开发欣喜,因为很多不支持的功能都开始支持,而尤其是MGR 方面的完善和物理复制的插件等等也是D们期待的。晚上也是有道理的,查询的速度估计会让继续使用MYSQL.5.7的感到欣慰。

mysql 8的安装上已经和mysql,5.7 在参数的配置上不一样了,所以还是先搞清楚哪些参数的问题,配置一个较优的mysql 8 比较好,目前mysql 最新的版本是8.019,目前稍微稳定的版本是8.015, 功能有创造性的是8.017.

下面的版本都是基于percona mysql 8.017 对比5.7的配置来说

1 SQL MODE 主要影响影响MySQL支持的SQL语法和它执行的数据验证检查,在MYSQL初始化的时候SQL MODE 是一个重要的设置,而MYSQL 5.7 和8.0 在一些配置上是有区别的。

下面是匹配mysql 8.011 以上的版本的SQL MODE

ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_ENGINE_SUBSTITUTION

下面是mysql 5.78以上的配置

ONLY_FULL_GROUP_BY STRICT_TRANS_TABLES NO_ZERO_IN_DATE NO_ZERO_DATE ERROR_FOR_DIVISION_BY_ZERO NO_AUTO_CREATE_USER NO_ENGINE_SUBSTITUTION

其中我们可以看到这里两个版本的区别,仅仅体现在 no_auto_create_user 这个选项上,这个选项的含义是除非指定了身份验证信息,否则将阻止GRANT语句自动创建新用户帐户。该语句必须指定使用identify BY或使用identify WITH的身份验证插件的非空密码。由于MYSQL 8 不能在通过grant 来建立账户,必须通过create user来进行,所以这个配置就被MYSQL 8 拿掉了。

如果不改变还使用MYSQL5.7的配置,会造成启动服务器报错

2 innodb_file_format 这个配置也在mysql 8 被去掉了,如果还有这个配置则MYSQL 8 无法启动并报错。主要是mysql 8不在支持Antelope 格式,只支持Barracuda格式,所以这个选项的存在就么有必要了。

3 innodb_undo_logs 在5.7 的配置产生多少UNDO LOGS 的配置,在8.0 已经使用 innodb_rollback_segments 来替代了。这里有一个公式,可以计算出当前你的设置能支持多少并发的事务,超过这个数字就会出现报错导致事务无法运行。

(innodb_page_size / 16 / 2) * innodb_rollback_segments *

number of undo tablespaces

4 query_cache_type 这也是在MYSQL 8.0 去掉的功能,在MYSQL 5.X 也很少被使用的一个鸡肋的功能。

5 MYSQL 的关于账户安全方面的插件,全部失效,需要安装符合8.0 的安全插件产品。所以相关的配置均不存在,如果配置则报错。

6 expire_logs_days ,这项配置也已经被取消

7 innodb_undo_tablespaces 这项配置也被取消

8 master-info-file, relay_log_info_file 等也都被取消,相关的信息被强制保存在数据表中。

在清理了这些配置后,也添加了其他的参与予以替换

1 Caching_sha2_password_rsa_public_key 新的用户安全插件使用的密码插件配置

2 Innodb_undo_tablespaces_active 多少存活的undo tablespace 数量

3 binlog_expire_logs_seconds 来设置BINLOG 的过期清理的时间,单位秒

4 innodb_deadlock_detect 检测死锁

5innodb_dedicated_server 自动调整 INNODB BUFFER内存 log file size, 数据刷新方法。

6 innodb_temp_tablespaces_dir 开始调整临时表的存放的空间

注:在 innodb_dedicated_server 设置为ON 的情况下,如果不清理原先与innodb_dedicated_server 有关的信息,则MYSQL 会根据你初始的设置项来进行设置,innodb_dedicated_server 相当于无效。

而其中UNDO LOG 的变化比较大

1 可以动态创建UNDO LOG

2 不在只能创建128个 SEGMENT

3 超过一定数量的UNDO LOG SIZE 会被 innodb_undo_truncate 检测通过innodb_max_undo_log_size 来控制,超过这个设置就开始自动在线收缩。

另外针对用户密码验证的问题,之前写过一篇MYSQL 的针对用户名密码验证的文字,这里就不重复了。

INSTALL COMPONENT 'file://component_validate_password';

最后在顺一遍MYSQL 8 的一些限制

1 一个表最多有 1017 列

2 一个表最多有 64个二级索引

3 一行最大的索引的承受字节是 3072 或者 767 bytes

4 uft8mb4 的表索引最大承受191个字符,超过无法建立索引,包含前缀索引

5 如果缩减innodb_page_size 到8KB 到 4KB ,以上的部分内容的限制会减半或减75%

6 建立二级索引,单个索引最大的运行列为16列

以上内容仅仅包含基本的不同,关于复制,MGR,以及验证,AUDIT 等都不在此文范围

代码语言:javascript
复制
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-10,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com