MySQL 5.6 中有哪些新功能、已弃用的功能和过时的功能?

分类:编程技术 时间:2024-02-20 15:47 浏览:0 评论:0
0
本文与您分享MySQL 5.6中的新功能、已弃用的功能和过时的功能。小编觉得还是比较实用的,所以分享给大家,作为参考。下面就跟随小编来看看吧。

新增
安全性改进。

您可以使用mysql_config_editor将登录验证信息保存在加密的.mylogin.cnf文件中,客户端可以从该文件中读取它。避免使用明文形式的登录信息。

通过内置的sha256_password认证插件,支持更强的账号和密码加密。

mysql.user表添加password_expired来标识密码是否过期。可以通过alter user语句设置密码过期时间。

密码安全检查是通过validate_password插件实现的。

MySQL 4.1之前的版本,对于使用Hash方法加密的账户密码,Mysql_upgrade会给出警告。

在 Unix 平台上,mysql_insall_db 支持 --random-passwords,可以为初始 root 用户生成更强的密码、设置密码过期时间以及删除匿名用户。

明文密码内容将不再出现在包括mysql客户端命令历史记录在内的各种日志(慢查询、二进制日志、普通日志)中。

START SLVAE语法改进可以在该语句中指定连接MASTER的参数,这样可以避免在master.info文件中保存密码等信息

服务器默认值的更改。
提供更好的性能并减少管理员手动修改设置

InnoDB 增强。
开始支持全文索引。
          在线DDL(即某些ALTER TABLE操作不需要复制表,并且不会阻止增删改查)。
                                                                                                                                                    supports DATA DIRECTORY='directory' file-per-table下每个表对应的.ibd文件可以存放在数据目录以外的其他目录中,这样提高了灵活性,从而提高了性能,比如.ibd放在单独的SSD上驾驶。
              支持可传输表空间,并允许动态导入和导出单个表空间(每个表的 .ibd 文件)。 FLUSH TABLE 的 FOR EXPORT 子句可以将缓冲区中未保存的更改刷新到 .ibd 文件。然后可以将 .ibd 文件副本和元数据文件复制到其他服务器实例(例如 SSD、HDD)。 ALTER TABLE 的 DISCARD TABLESPACE 和 IMPORT TABLESPACE 子句可以将数据加载到不同的 MySQL 实例中。
可以通过 innodb_page_size 设置 noDB 页大小(默认 16KB,可设置为 8KB、4KB),以适应特定的工作负载和硬件,以减少冗余,提高系统性能。
Buffer Pool刷新算法得到了改进,增强了性能和并发性,并且可以通过一系列参数进行调整。
与Memcached集成,可以通过Nosql-Style API访问数据,避免解析和构建查询计划的开销(适合简单的查询、更新等)。
     用于优化的统计信息更加准确,服务重启后仍可保持,采样率可控。
                优化只读事务可提高即席查询和报告生成应用程序的性能和并发性。
您可以将InnoDB undo log从系统表空间移动到一个或多个独立表空间(例如移动到SSD磁盘)。
可以通过 innodb_checksum_algorithm=crc32 指定使用更快的校验和算法。
                  重做日志文件的总大小可达 512G(之前为 4G)。单个文件的大小通过innodb_log_file_size指定,文件数量通过innodb_log_files_in_group指定,存储路径通过innodb_log_group_home_dir指定。
                                                                                                                                         MySQL中的InnoDB表可以配置为只读模式(通过--innodb-read-only),这样就可以从只读介质如DVD和CD上访问它。询问InnoDB表或构建一个数据仓库,多个实例共享数据目录。
可以通过innodb_compression_level指定InnoDB压缩表的压缩级别,并指定是否存储重新压缩的数据通过innodb_log_compressed_pa​​ges对重做日志中的缓冲池中的压缩页进行更新操作引起的ges。
                                                                                                                                        InnoDB压缩表中padding块的比例(用于避免DML时重新压缩,但太多会增加压缩失败的概率)可以通过innodb_compression_failure_threshold_pct、innodb_compression_pad_pct_max动态调整来减少压缩失败率不通过使用新参数重建表或使用不同的页面大小重建整个实例。
                            INFORMATION_SCHEMA中添加了InnoDB相关的系统表,可以查询InnoDB缓冲池、表元数据、索引、外键、底层性能相关数据等。
            新的InnoDB可以使用LRU算法m 释放打开的表占用的内存,以减轻大量表服务器的内存负载。 (打开的InnoDB表可以使用的内存量可以通过table_definition_cache来调整)内部性能优化,例如通过分割内核互斥量来减少争用,将flush操作从主线程移到单独的线程,使用多次刷新线程,减少大内存系统上的缓冲池争用。
快速的死锁检测算法,InnoDB相关的死锁信息会被写入错误日志中。
                                                                                  可以在服务器重启后立即重新加载到 InnoDB 缓冲池中,以避免重启后较长的“预热”时间,特别是对于 InnoDB 内存较大的实例noDB 缓冲池。缓冲池中的数据可以在服务器关闭时转储并在下次重新启动后加载,也可以导入在运行过程中进行测试并导出。
5.6.16 Innochecksum可以支持2G以上的文件
可以动态打开和关闭InnoDB Monitor(会分别动态打开和关闭。ERROR LOG打印InnoDB相关信息,后一个打开一个参数的结果必须基于前一个参数的打开,并且后一个参数的结果是前一个结果的子集)。
5.6.17之后,可以使用在线DDL(ALGORITHM=INPLACE)通过以下操作OPTIMIZE TABLE、ALTER TABLE ... FORCE、ALTER TABLE ... ENGINE=INNODB来重建表,以减少重建时间并允许并发DML。

分区。
最大分区数可以为 8192(包括子分区数)
可以使用 ALTER TABLE...EXCHANGE PARTITION 来交换一个分区的一个分区分区表或非分区表。子分区(前提是两个表除了p之外的表结构相同分区,并且非分区表不是临时表并且没有外键引用或者引用的外键非分区表不包含超出要交换的分区边界的值)
                   您可以限制查询一个或多个分区或子分区。支持的语句包括 SELECT、DELETE、INSERT、REPLACE、UPDATE、LOAD DATA 和 LOAD XML。
          分区锁修剪通过消除分区上的锁,极大地提高了多分区表上的 DML 和 DDL 操作的性能。


性能架构。
更丰富的信息。表输入输出、表事件过滤、线程事件过滤、表、索引I/O和表锁摘要信息、语句和语句阶段信息等。相关的两个参数是--gtid-mode和--enforce-gtid-一致性。如果使用 GTID,则在启动新的从站或 p 时不必指定日志文件以及文件中的位置指向新的master,流程可以大大简化。另外,由于基于GTID的复制完全基于事务,因此很容易检查主从一致性。只要master上提交的事务在slave上也已经提交了,就可以保证一致性。

复制和日志记录。

开始支持使用GTID(全局事务标识符)的基于事务的复制,从而能够识别和跟踪在主站和从站上应用的每个事务都成为可能。
                                                         在基于行的复制中控制行图像中包含的列,以便它可以包含所有列或不包含 BLOB 和 TEXT 列,或者仅包含唯一标识和对每一行执行更改所需的各个列以节省磁盘成本开销、网络开销和内存使用情况。
MySQL服务器对二进制日志的读写可以是安全的,因为只有完整的事务/事件才会被记录和读取。默认情况下,会记录事件本身和事件的长度,然后使用此信息来验证事件是否正确写入。您还可以使用 binlog_checksum 变量使服务器使用 CRC32 算法为事件写入校验和,并使用 master_verify_checksum 使服务器从日志文件中读取校验和。 --slave-sql-verify-checksum 可以使slave的SQL线程从中继日志中读取校验和。读取校验和。

                                                                                                                                                               主站的连接信息和从站的中继日志信息可以保存在文件或表格中。相关参数是--master-info-repository和--relay-log-info-repository。不过,为了保证复制的崩溃安全,当你选择在表中保存master的连接信息和slave的中继日志信息时,相关的表必须是InnoDB等事务引擎(5.6.6之后的版本会自动创建为 InnoDB 表,但之前的版本会创建 MyISAM 表,因此在开始复制之前必须将其修改为 InnoDB 引擎)

























log工具可以从原始二进制格式备份二进制日志文件指定主机。与该工具相关的命令行参数是 --read-from-remote-server 和 --raw

可以在masterer之后延迟slave一段特定的时间。修改后的功能可用于测试延迟的影响或避免 DBA 在 master 上意外犯错误(由 CHANGE MASTER TO 中的 MASTER_DELAY 指定)。

对于具有多个网络接口的 SALVE 机器,可以指定仅使用其中一个(通过 Change Master to 语句中的 Master_Bind 指定

新的 LOG_BIN_BASEENAME 参数用于指定二进制日志文件的完整路径和文件名

支持slave上多线程并行执行master传下来的事务,通过指定slave上并发执行事务的worker数量Slave_parallel_workers.这种并发是基于数据库的,即数据库中的操作是顺序的,master和slave必须按照相同的顺序执行,但是这个或者不同数据库之间不需要der,即一个worker更新某个库后不必等待其他worker更新某个库。

                                                                                                                                                                                                         磁盘扫描多范围读取。有效减少缓存中未缓存大表时,二级索引范围扫描导致的随机磁盘访问。采用的方法是先扫描找到相关行关联的键,然后根据主键对键进行排序,最后根据排序后的键从表中检索数据。
实施ICP(索引条件下推)。如果没有ICP,存储引擎层根据索引定位表中的行并将其返回到服务器层,在服务器层使用WHERE子句中的条件过滤结果。如果IC使用P,如果WHERE条件中的某些列可以通过索引中的字段进行评估,则服务器层会将这部分WHERE条件下推到存储引擎层。引擎层评估并仅取出满足要求的行。这样可以有效减少引擎访问表的次数和服务器访问引擎的次数。
           EXPLAIN 支持删除、插入、替换和更新。此前仅支持 SELECT,并且可以以 JSON 格式输出。
          在 FROM 子句中处理子查询(派生表)更加高效。首先,直到查询执行过程中需要这部分内容时,才会进行FROM之后的子查询的物化过程。另外,查询时可能会为派生表添加索引,以加快查询速度。
           使用半连接和物化策略来优化子查询。
           使用 BKA(批量密钥访问)连接算法以提高连接性能。支持内连接、外连接、半连接、嵌套外连接和嵌套半连接。
新的TRACING功能主要供开发者使用。通过一系列optimizer_trace_xxx变量和INFORMATION_SCHEMA。OPTIMIZER_TRACE用于提供

条件处理。
可以通过GET DIAGNOSTICS语句获取各种诊断信息

数据类型.
对于TIME、DATETIME、TIMESTAMP类型该值支持十进制秒,最高可达毫秒级别(即6位精度)。
在以前的版本中,每个表最多有一个 TIMESTAMP 列,可以将其初始化为今天的日期和时间 (DEFAULT CURRENT_TIMESTAMP) 或更新为今天的日期和时间 (ON UPDATE CURRENT_TIMESTAMP)。新版本中取消了这一限制。此外,以前只有 TIMESTAMP 列可以使用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP,但现在也可以使用 datetime 列。
    在在以前的版本中,如果 TIMESTAMP 列定义中未指定任何内容,它会自动默认为 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。现在可以通过explicit_defaults_for_timestamp 变量关闭此行为。

主机缓存。
提供有关导致连接错误的原因以及主机缓存访问改进的更多信息,包括可用于避免 DNS 查询的客户端 IP 和主机名。具体实现如下:
  添加了一系列Connection_errors_xxx状态变量,用于提供有关连接错误的信息。此信息是代表所有连接的各种错误消息的全局聚合,并且不特定于特定 IP 地址。
Performance_schema库增加了一个新的host_cache表,并且有更多关于错误信息的计算,以跟踪各种错误(特定IP的非错误),以便您可以了解q查询了多少主机查询表。缓存,哪些主机遇到了哪些类型的错误,以及连接错误数量与 max_connect_errors 限制的接近程度。
             主机缓存大小可以通过host_cache_size调整
 
 
      OpenGIS。
                                                                                                                                                                                                                                                       。

降级
ERROR_FOR_DIVISION_BY_ZERO、NO_ZERO_DATE 和 NO_ZERO_IN_DATE 在多种 SQL 模式中已弃用。这些值在MySQL5.7中不会产生任何影响,并且影响会包含在严格SQL模式((STRICT_ALL_TABLES或STRICT_TRANS_TABLES)中。升级MySQL时要注意这些问题。确保新版本中的SQL MODE不会影响应用。

GROUP BY 中的隐式排序已被弃用。这是 M 的扩展ySQL。 ,可能会因性能原因在未来版本中被删除。所以最好使用ORDER BY语句显式指定顺序。

不建议使用4.1之前版本的password和mysql_old_password认证插件,不安全。要防止使用旧版本的密码哈希,请在启动时启用 secure_auth。对于DBA,建议将使用mysql_old_password认证插件的账户切换为使用mysql_native_password认证插件。

4.1版本之前不建议使用OLD_PASSWORD()和old_passwords=1生成密码。

不建议使用--skip-innodb或--innodb=OFF、--disable-innodb;日期格式、日期时间格式和时间格式; have_profiling、profiling 和 profiling_history_size; innodb_use_sys_malloc 和 innodb_additional_mem_pool_size; timed_mutexes 变量。这些可能会在未来版本中删除。

使用 --lc-messages-dir 和 --lc-messages 而不是 --language (用于指定错误消息所用的语言)。

不建议使用ALTER IGNORE TABLE。

不建议使用工具msql2mysql、mysql_convert_table_format、mysql_find_rows、mysql_fix_extensions、mysql_setpermission、mysql_waitpid、mysql_zap、mysqlaccess和mysqlbug。

不建议使用mysqlhotcopy工具。


删除 --log 选项并使用 --general_log 和 --general_log_file=file_name 代替。
--log-slow-queries 选项。使用 --slow_query_log 和 --slow_query_log_file=file_name 代替。
--单线程选项。使用 --thread_handling=no-threads 代替。
--安全模式。
--跳过线程优先级。
--表缓存。请改用 table_oopen_cache 变量。
删除 --init-rpl-role、--rpl-recovery-rank 选项以及 rpl_recovery_rank、Rpl_status 状态变量。
取消engine_condition_pushdown变量并将其更改为标志engine_conditOptimizer_switch 变量中的 ion_pushdown。
取消have_csv、have_innodb、have_ndbcluster 和have_partitioning 变量。使用 SHOW PLUGIN 或查询 INFORMATION-SCHEMA 中的 PLUGINS 表。
sql_big_tables 变量替换为 big_tables。
sql_low_priority_updates 变量替换为 low_priority_updates。
sql_max_join_size 变量替换为 max_join_size。
max_log_data_size 变量替换为 max_allowed_pa​​cket。
FLUSH MASTER 和 FLUSH SLAVE 语句替换替换 RESET MASTER 和 RESET SLAVE。
SLAVE START 和 SLAVE STOP 替换为 START SLAVE 和 STOP SLAVE。
取消SHOW AUTHORS 和SHOW CONTRIBUTORS。
取消SET 命令中的OPTION 和ONE_SHOT 修饰符。
不允许在存储过程和存储函数中将参数或局部变量设置为DEFAULT(SET var_name = DEFAULT)。但是,系统变量可以设置为 DEFAULT。
删除SHOW ENGINE INNODB MUTEX。

谢谢你来读书!这篇关于《MySQL 5.6 中有哪些新功能、已弃用的功能和过时的功能》的文章就分享在这里。希望以上内容能够给大家带来一些帮助,让大家学到更多的知识。 ,如果您觉得文章不错,可以分享出去,让更多的人看到!

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > MySQL 5.6 中有哪些新功能、已弃用的功能和过时的功能?

用户评论