MySQL 5.6中新增特性、不推荐使用的功能以及废弃的功能有哪些

技术MySQL 5.6中新增特性、不推荐使用的功能以及废弃的功能有哪些这篇文章给大家分享的是有关MySQL 5.6中新增特性、不推荐使用的功能以及废弃的功能有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随

这篇文章是关于MySQL 5.6中的新特性、不推荐使用的函数和过时的函数。我觉得边肖挺实用的,就分享给大家参考,和边肖一起来看看。

增加

安全改进。

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

内置的sha256_password身份验证插件支持更强的帐户密码加密。

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

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

4.1版之前用mysql的Hash方法加密的帐户密码mysql_upgrade将被警告。

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

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

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

变化

到服务器默认值。

提供更好的性能,减少管理员对设置的手动修改。

InnoDB增强功能。

开始支持全文索引。

在线DDL(即一些ALTER TABLE操作不需要复制表,也不阻止添加、删除和修改)。

CREATE TABLE语句支持DATA DIRECTORY='directory ',它可以存储。ibd文件对应于数据目录之外的目录中的每表文件下的每个表,从而提高灵活性和性能,例如放置。ibd在单独的SSD磁盘中。

支持可传输表空间,以及单个表空间的动态导入和导出(。每个表的ibd文件)。FLUSH TABLE的FOR EXPORT子句可以将缓冲区中未保存的更改刷到。ibd文件。然后,您可以复制。ibd文件和元数据文件到其他服务器实例(如SSD和HDD)。ALTER TABLE的TABLE和IMPORT TABLE子句可以将数据加载到不同的MySQL实例中。

InnoDB页面大小可以通过innodb_page_size设置(默认16KB可以设置为8KB和4KB),以适应特定的负载和硬件,从而减少冗余,提高系统性能。

对缓冲池刷新算法进行了改进,提高了性能和并发性,可以通过一系列参数进行调整。

与memcached的集成可以使用NoSQL风格的API来访问数据,并避免解析和构建查询计划的开销(适用于简单的查询、更新等)。).

nbsp;         优化用的统计信息更加精确且可在服务重启后保持并可控制采样率。
          优化只读事务对于ad-hoc queries和report-generating 应用提升了性能和并发。
          可将InnoDB undo log 从系统表空间移至一个或多个独立表空间(如移动到SSD盘)。
          可通过 innodb_checksum_algorithm=crc32指定使用更快的checksum算法。
          redo log文件总大小可达到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 compressed表的压缩级别并通过innodb_log_compressed_pages指定是否将buffer pool中compressed pages由于更新操作引起的re-compressed
pages存储在redo log中。
          可通过innodb_compression_failure_threshold_pct,
innodb_compression_pad_pct_max动态调整InnoDB压缩表中的填充块(用以避免DML时的重新压缩,但数量过多时会增加压缩失败的几率)的比例,以降低压缩失败率而无需通过新的参数重建表或者以不同的页大小重建整个实例。
          INFORMATION_SCHEMA中新增InnoDB相关系统表,可查询InnoDB buffer pool、表元数据、索引、外键、底层性能相关的数据等。
          新的InnoDB可以使用LRU算法释放打开的表所占用的内存以缓解有大量表的服务器上的内存负载。(可通过 table_definition_cache 调整打开的InnoDB表可使用的内存量)
          内部性能优化,如通过拆分kernel mutex减少争用、将flush操作由主线程移至独立线程、使用多个刷新线程、较少大内存系统上的buffer pool的争用。
          更快的死锁检测算法,InnoDB相关的死锁信息会全部写入错误日志。
          可在服务器重启后立即重载页至InnoDB buffer pool以避免重启后过长的“热身”时间,尤其是InnoDB buffer pool较大的实例。可在服务器关闭时dump出buffer pool中的数据下次重启后载入、也可以在运行过程中导入导出。
          5.6.16后innochecksum可支持2G以上的文件
          可通过innodb_status_output和innodb_status_output_locks,分别动态开闭InnoDB Monitor和InnoDB Lock Monitor(分别会在error log中打印出InnoDB相关信息,后一个参数的开启要以前一个参数的开启为前提,以后后一个参数的结果是前一个结果的子集)。
          5.6.17后可以使用online DDL(ALGORITHM=INPLACE)通过如下操作OPTIMIZE TABLE、ALTER TABLE ... FORCE、ALTER TABLE ... ENGINE=INNODB 来重建表,以减少重建时间并允许并发的DML。

     Partitioning.
          分区最大量可达8192(包含子分区的量)
          可使用ALTER TABLE ... EXCHANGE PARTITION与非分区表交换分区表的一个分区或子分区(前提是这两个表除了分区之外表结构一致、且非分区的表不为临时表且无外键引用或被引用的外键非分区表中不包含要交换的分区边界以外的值)
          可以限定在一个或者多个分区或子分区内查询。支持的语句包括SELECT、DELETE、INSERT、REPLACE、UPDATE、LOAD DATA、LOAD XML。
          Partition lock pruning通过消除分区上的锁,极大提升了多分区表上DML、DDL操作的性能。

     Performance Schema.
              
更加丰富的信息。表输入输出,表事件过滤,线程事件过滤,表、索引I/O及表锁摘要信息,语句及语句的阶段信息等。相关的两个参数为 --gtid-mode和--enforce-gtid-consistency。若使用GTIDs在开始一个新的slave或者指向一个新的master时就不必指定日志文件和文件中的位置,过程可大大简化。另外,因基于GTID的复制时完全基于事务的,因而很容易检查主从一致性,只要master上提交的事务在slave上也提交过就可以保证一致。

     Replication
and logging.

         
开始支持使用GTIDs( global transaction
identifiers)的基于事务的复制,使识别和追踪在master上提交并在slave上应用的每个事务成为可能。
         
          可通过binlog_row_image控制 row-based复制中的row image所包含的列,使其可以包含所有列或者不包含BLOB和TEXT列或者仅包含必要的用于唯一标识并执行每一行上的变化的个别列,以便于节省磁盘开销、网络开销和内存使用。
         
          MySQL Server 对二进制日志的读写是 crash-safe的,因只记录和读取完整的事务/事件。默认,会记录事件本身和事件的长度,然后利用这些信息验证事件是否被正确书写。也可以通过binlog_checksum 变量使server使用CRC32算法为事件写校验和,并通过 master_verify_checksum使server从日志文件中读取校验和,
--slave-sql-verify-checksum 可以使slave的SQL thread从中继日志中读取校验和。

          支持选择将master的连接信息以及slave的中继日志信息保存在文件或者表中,相关参数为--master-info-repository和--relay-log-info-repository。但为了保证复制的crash-safe,当选择将master的连接信息以及slave的中继日志信息保存在表中时相关的表必须是事务性引擎如InnoDB(5.6.6之后的版本会自动创建为InnoDB表但之前的版本会创建MyISAM表,因此在复制开始之前一定要修改为InnoDB引擎)

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

          支持延迟复制,也即,将slave延后于master一段特定的时间。改特性可以用于测试延迟带来的影响或者挽救 DBA在master上不小心犯的错误(通过CHANGE MASTER TO中的MASTER_DELAY指定)。

          对于有多块网络接口的salve机器可指定只使用其中某一个(通过CHANGE MASTER TO 语句中的 MASTER_BIND指定)

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

          支持slave上多个线程并行执行master上传递下来的事务。通过
slave_parallel_workers指定slave上并发执行事务的worker数量。这种并发是基于数据库的,也即数据库内的操作是有先后顺序的,主从上需以一致的顺序执行,但不同数据库之间则不需要这种顺序,也即一个worker可不必等待其他worker在更新完某个库之后再更新某库。

              
     Optimizer enhancements.
          优化了SELECT ... FROM single_table ... ORDER BY
non_index_column [DESC] LIMIT [M,]N;查询性能
          实现了Disk-Sweep Multi-Range Read.有效减少了在大表且没有缓存在缓存中的情况下在辅助索引上范围扫描造成的随机磁盘访问。采用的办法是先扫描找出相关行关联的key,然后依据主键将key排序,最终依据排好序的key回表取出数据。
          实现了ICP(Index Comndition Pushdowndown)。若没有ICP,存数引擎层根据索引定位表中的行并返回给Server层然后在这里用WHERE从句中的条件对结果进行过滤。若使用ICP,如果WHERE条件中的部分列可由索引中的字段进行评估那么server层会将WHERE条件中的这一部分下推到存储引擎层。引擎层进行评估后只取出满足要求的行。这样可有效减少引擎访问表的次数和server访问引擎的次数。
          EXPLAIN支持 DELETE, INSERT, REPLACE和UPDATE,以前只支持SELECT,且可以以JSON格式输出。
          处理FROM从句中的子查询(派生表)更加高效。首先FROM后的子查询的物化过程直到查询执行时需要这一部分的内容时才进行,另外查询可能会在派生表上加索引以加快查询。
          使用semi-join和物化策略优化子查询。
          使用BKA(Batched Key Access)join算法提升join性能。支持inner join、outer join、semi-join、nested outer joins和nested semi-joins。    
          新增tracing功能主要供开发者使用。通过一些列 optimizer_trace_xxx 变量和 INFORMATION_SCHEMA.OPTIMIZER_TRACE来提供

     Condition handling.
          可通过GET DIAGNOSTICS语句获取各种诊断信息

     Data types.
          对于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 变量关闭这一行为。

     Host cache.
          提供了更多有关导致连接错误的原因的信息以及对host cache访问的改进,其中包含客户端IP和主机名可用以避免DNS查询。具体实现如下:
          增加了一系列 Connection_errors_xxx状态变量,提供有关连接错误的信息,这些信息是全局的表示所有连接的各类错误信息的聚合,不是针对于某个特定IP地址。
          performance_schema库新增host_cache表且有更多的关于错误信息的计数字段来track各类错误(非针对特定IP的错误),这样一来便可通过查询该表得知有多少主机被缓存、哪些主机发生了哪类错误、连接错误量有多接近max_connect_errors限制。
          可通过 host_cache_size调整host cache大小

     OpenGIS.
          原生实现了OPENGIS规范定义的测量两个几何值之间关系的一系列函数。

降级
     ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE和NO_ZERO_IN_DATE 几个sql mode 不赞成使用,MySQL5.7中这些值不会有任何影响,效果会被包含在strict SQL mode中((STRICT_ALL_TABLES 或 STRICT_TRANS_TABLES)。MySQL升级时要注意这些问题。确保新版本中的SQL MODE不会影响应用。

     GROUP BY中的隐式排序不赞成使用,这属于有MySQL的一个扩展,可能在将来版本中出于性能考虑被移除。所以最好使用ORDER BY语句明确指明排序。

     不推荐使用4.1之前版本的密码和mysql_old_password认证插件,不安全。为防止使用旧版本密码哈希可将secure_auth 开启。对于DBA 建议将使用mysql_old_password 认证插件的账户转为使用 mysql_native_password认证插件。

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

     不建议使用 --skip-innodb或者--innodb=OFF,
--disable-innodb;date_format,
datetime_format 和 time_format; 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 代替。
     --one-thread选项。用 --thread_handling=no-threads 代替。
     --safe-mode。
     --skip-thread-priority。
     --table-cache。使用table_oopen_cache变量代替。
     移除--init-rpl-role、--rpl-recovery-rank
options选项, 和rpl_recovery_rank、Rpl_status状态变量。
     取消engine_condition_pushdown 变量,改为optimizer_switch变量中的一个flag 
engine_condition_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_packet。
     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中新增特性、不推荐使用的功能以及废弃的功能有哪些”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/66418.html

(0)

相关推荐

  • 火线字母,请问插头上的l。n那个是火线

    技术火线字母,请问插头上的l。n那个是火线按我国现行标准,GB2681中第3条依导线颜色标志电路时,一般应该是相线-A相黄色,B相绿色,C相红色。零线-淡蓝色。地线是黄绿相间。如果是三相插座,左边是零线,中间(上面)是地

    生活 2021年10月23日
  • 自建蜘蛛池用什么服务器比较好

    技术自建蜘蛛池用什么服务器比较好什么是蜘蛛池? 蜘蛛池原理其实很简单,就是由大量域名组成的站群,每个网站下生生成海量页面,这些页面内容都是相互组合拼凑出来的,没有什么质量可言,可以说就是一大群垃圾站点,但是这群网站,每个

    礼包 2021年10月30日
  • 分析PostgreSQL日志相关的配置参数log_XXX

    技术分析PostgreSQL日志相关的配置参数log_XXX本篇内容主要讲解“分析PostgreSQL日志相关的配置参数log_XXX”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家

    攻略 2021年11月5日
  • java中实现时间差的计算

    技术java中实现时间差的计算 java中实现时间差的计算java中实现时间差的计算
    代码编写
    package com.excel.demo;import java.text.DateFormat;
    i

    礼包 2021年12月6日
  • 746. 使用最小花费爬楼梯

    技术746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。
    每当你爬上一个阶梯你都要花费对应

    礼包 2021年10月26日
  • MySQL 5.7.25在Windows平台如何安装

    技术MySQL 5.7.25在Windows平台如何安装这篇文章将为大家详细讲解有关MySQL 5.7.25在Windows平台如何安装,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1

    攻略 2021年11月1日