溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL5.6中新增特性、不推薦使用的功能以及廢棄的功能有哪些

發(fā)布時(shí)間:2021-11-06 11:35:02 來(lái)源:億速云 閱讀:132 作者:小新 欄目:MySQL數(shù)據(jù)庫(kù)

這篇文章給大家分享的是有關(guān)MySQL5.6中新增特性、不推薦使用的功能以及廢棄的功能有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

新增
     Security improvements.

          可使用mysql_config_editor將登陸認(rèn)證信息以加密方式保存在.mylogin.cnf文件中,客戶端可從該文件讀取以避免以明文方式使用登錄信息。

          通過(guò)內(nèi)置sha256_password認(rèn)證插件支持更強(qiáng)的賬戶密碼加密。

          mysql.user表新增password_expired用以標(biāo)識(shí)密碼是否過(guò)期??赏ㄟ^(guò)alter user語(yǔ)句設(shè)置密碼過(guò)期。

          通過(guò) validate_password 插件實(shí)現(xiàn)密碼安全度檢查。

          對(duì)于使用MySQL4.1之前版本的Hash方法加密的賬戶密碼mysql_upgrade 會(huì)給出警告。

          在Unix平臺(tái)上mysql_install_db支持--random-passwords,可為初始root用戶生成強(qiáng)度更高的密碼并設(shè)置密碼過(guò)期、移除匿名用戶。

          各類日志(慢查詢、二進(jìn)制日志、通用日志)包括mysql客戶端命令歷史記錄中不再會(huì)出現(xiàn)明文密碼內(nèi)容。

          START SLVAE語(yǔ)法改進(jìn)可在該語(yǔ)句中指定連接MASTER的參數(shù),可避免將密碼之類的信息保存在master.info文件

     Changes to server defaults.
          提供更好的性能并減少管理員對(duì)設(shè)置的手工修改

     InnoDB enhancements.
          開(kāi)始支持全文索引。
          Online DDL(即一些ALTER TABLE操作無(wú)需拷貝表、不阻塞增刪改)。
          CREATE TABLE語(yǔ)句支持DATA DIRECTORY='directory' 可將file-per-table 下每個(gè)表對(duì)應(yīng)的.ibd文件存放在數(shù)據(jù)目錄以外的其他目錄,提升了靈活性繼而可提升性能,比如將.ibd放在單獨(dú)的SSD盤(pán)。
          支持transportable tablespaces、允許單表空間(每個(gè)表的.ibd文件)動(dòng)態(tài)導(dǎo)入導(dǎo)出。 FLUSH TABLE的FOR EXPORT從句可將buffer中未保存的變化刷到.ibd文件。之后可將.ibd文件拷貝和元數(shù)據(jù)文件拷貝至其他服務(wù)器實(shí)例(如SSD、HDD)。ALTER TABLE的DISCARD TABLESPACE和IMPORT TABLESPACE從句可將數(shù)據(jù)載入不同的MySQL實(shí)例。
          可通過(guò)innodb_page_size設(shè)置InnoDB頁(yè)大?。J(rèn)16KB可設(shè)置為8KB、4KB)以適應(yīng)特定的負(fù)載和硬件來(lái)降低冗余、提升系能。
          Buffer Pool刷新算法得以改進(jìn)以增強(qiáng)性能和并發(fā)性,可通過(guò)一系列參數(shù)進(jìn)行調(diào)整。
          與memcached整合可使用NoSQL-style API來(lái)訪問(wèn)數(shù)據(jù)避免解析和構(gòu)建查詢計(jì)劃的開(kāi)銷(適用于簡(jiǎn)單查詢、更新等)。
          優(yōu)化用的統(tǒng)計(jì)信息更加精確且可在服務(wù)重啟后保持并可控制采樣率。
          優(yōu)化只讀事務(wù)對(duì)于ad-hoc queries和report-generating 應(yīng)用提升了性能和并發(fā)。
          可將InnoDB undo log 從系統(tǒng)表空間移至一個(gè)或多個(gè)獨(dú)立表空間(如移動(dòng)到SSD盤(pán))。
          可通過(guò) innodb_checksum_algorithm=crc32指定使用更快的checksum算法。
          redo log文件總大小可達(dá)到512G(之前為4G),通過(guò)innodb_log_file_size指定單個(gè)文件大小,innodb_log_files_in_group指定文件數(shù)量、innodb_log_group_home_dir指定存放路徑。
          可將MySQL中InnoDB表配置為只讀模式(通過(guò)--innodb-read-only),這樣可在只讀媒介如DVD、CD上訪問(wèn)InnoDB表或者搭建多實(shí)例共享數(shù)據(jù)目錄的數(shù)據(jù)倉(cāng)庫(kù)。
          可通過(guò)innodb_compression_level指定InnoDB compressed表的壓縮級(jí)別并通過(guò)innodb_log_compressed_pages指定是否將buffer pool中compressed pages由于更新操作引起的re-compressed pages存儲(chǔ)在redo log中。
          可通過(guò)innodb_compression_failure_threshold_pct, innodb_compression_pad_pct_max動(dòng)態(tài)調(diào)整InnoDB壓縮表中的填充塊(用以避免DML時(shí)的重新壓縮,但數(shù)量過(guò)多時(shí)會(huì)增加壓縮失敗的幾率)的比例,以降低壓縮失敗率而無(wú)需通過(guò)新的參數(shù)重建表或者以不同的頁(yè)大小重建整個(gè)實(shí)例。
          INFORMATION_SCHEMA中新增InnoDB相關(guān)系統(tǒng)表,可查詢InnoDB buffer pool、表元數(shù)據(jù)、索引、外鍵、底層性能相關(guān)的數(shù)據(jù)等。
          新的InnoDB可以使用LRU算法釋放打開(kāi)的表所占用的內(nèi)存以緩解有大量表的服務(wù)器上的內(nèi)存負(fù)載。(可通過(guò) table_definition_cache 調(diào)整打開(kāi)的InnoDB表可使用的內(nèi)存量)
          內(nèi)部性能優(yōu)化,如通過(guò)拆分kernel mutex減少爭(zhēng)用、將flush操作由主線程移至獨(dú)立線程、使用多個(gè)刷新線程、較少大內(nèi)存系統(tǒng)上的buffer pool的爭(zhēng)用。
          更快的死鎖檢測(cè)算法,InnoDB相關(guān)的死鎖信息會(huì)全部寫(xiě)入錯(cuò)誤日志。
          可在服務(wù)器重啟后立即重載頁(yè)至InnoDB buffer pool以避免重啟后過(guò)長(zhǎng)的“熱身”時(shí)間,尤其是InnoDB buffer pool較大的實(shí)例??稍诜?wù)器關(guān)閉時(shí)dump出buffer pool中的數(shù)據(jù)下次重啟后載入、也可以在運(yùn)行過(guò)程中導(dǎo)入導(dǎo)出。
          5.6.16后innochecksum可支持2G以上的文件
          可通過(guò)innodb_status_output和innodb_status_output_locks,分別動(dòng)態(tài)開(kāi)閉InnoDB Monitor和InnoDB Lock Monitor(分別會(huì)在error log中打印出InnoDB相關(guān)信息,后一個(gè)參數(shù)的開(kāi)啟要以前一個(gè)參數(shù)的開(kāi)啟為前提,以后后一個(gè)參數(shù)的結(jié)果是前一個(gè)結(jié)果的子集)。
          5.6.17后可以使用online DDL(ALGORITHM=INPLACE)通過(guò)如下操作OPTIMIZE TABLE、ALTER TABLE ... FORCE、ALTER TABLE ... ENGINE=INNODB 來(lái)重建表,以減少重建時(shí)間并允許并發(fā)的DML。

     Partitioning.
          分區(qū)最大量可達(dá)8192(包含子分區(qū)的量)
          可使用ALTER TABLE ... EXCHANGE PARTITION與非分區(qū)表交換分區(qū)表的一個(gè)分區(qū)或子分區(qū)(前提是這兩個(gè)表除了分區(qū)之外表結(jié)構(gòu)一致、且非分區(qū)的表不為臨時(shí)表且無(wú)外鍵引用或被引用的外鍵非分區(qū)表中不包含要交換的分區(qū)邊界以外的值)
          可以限定在一個(gè)或者多個(gè)分區(qū)或子分區(qū)內(nèi)查詢。支持的語(yǔ)句包括SELECT、DELETE、INSERT、REPLACE、UPDATE、LOAD DATA、LOAD XML。
          Partition lock pruning通過(guò)消除分區(qū)上的鎖,極大提升了多分區(qū)表上DML、DDL操作的性能。


     Performance Schema.
               更加豐富的信息。表輸入輸出,表事件過(guò)濾,線程事件過(guò)濾,表、索引I/O及表鎖摘要信息,語(yǔ)句及語(yǔ)句的階段信息等。相關(guān)的兩個(gè)參數(shù)為 --gtid-mode和--enforce-gtid-consistency。若使用GTIDs在開(kāi)始一個(gè)新的slave或者指向一個(gè)新的master時(shí)就不必指定日志文件和文件中的位置,過(guò)程可大大簡(jiǎn)化。另外,因基于GTID的復(fù)制時(shí)完全基于事務(wù)的,因而很容易檢查主從一致性,只要master上提交的事務(wù)在slave上也提交過(guò)就可以保證一致。

     Replication and logging.

          開(kāi)始支持使用GTIDs( global transaction identifiers)的基于事務(wù)的復(fù)制,使識(shí)別和追蹤在master上提交并在slave上應(yīng)用的每個(gè)事務(wù)成為可能。
         
          可通過(guò)binlog_row_image控制 row-based復(fù)制中的row image所包含的列,使其可以包含所有列或者不包含BLOB和TEXT列或者僅包含必要的用于唯一標(biāo)識(shí)并執(zhí)行每一行上的變化的個(gè)別列,以便于節(jié)省磁盤(pán)開(kāi)銷、網(wǎng)絡(luò)開(kāi)銷和內(nèi)存使用。
         
          MySQL Server 對(duì)二進(jìn)制日志的讀寫(xiě)是 crash-safe的,因只記錄和讀取完整的事務(wù)/事件。默認(rèn),會(huì)記錄事件本身和事件的長(zhǎng)度,然后利用這些信息驗(yàn)證事件是否被正確書(shū)寫(xiě)。也可以通過(guò)binlog_checksum 變量使server使用CRC32算法為事件寫(xiě)校驗(yàn)和,并通過(guò) master_verify_checksum使server從日志文件中讀取校驗(yàn)和, --slave-sql-verify-checksum 可以使slave的SQL thread從中繼日志中讀取校驗(yàn)和。

          支持選擇將master的連接信息以及slave的中繼日志信息保存在文件或者表中,相關(guān)參數(shù)為--master-info-repository和--relay-log-info-repository。但為了保證復(fù)制的crash-safe,當(dāng)選擇將master的連接信息以及slave的中繼日志信息保存在表中時(shí)相關(guān)的表必須是事務(wù)性引擎如InnoDB(5.6.6之后的版本會(huì)自動(dòng)創(chuàng)建為InnoDB表但之前的版本會(huì)創(chuàng)建MyISAM表,因此在復(fù)制開(kāi)始之前一定要修改為InnoDB引擎)

          mysqlbinlog工具可以從指定的主機(jī)以原始的二進(jìn)制格式備份二進(jìn)制日志文件。工具相關(guān)的命令行參數(shù)為 --read-from-remote-server和--raw

          支持延遲復(fù)制,也即,將slave延后于master一段特定的時(shí)間。改特性可以用于測(cè)試延遲帶來(lái)的影響或者挽救 DBA在master上不小心犯的錯(cuò)誤(通過(guò)CHANGE MASTER TO中的MASTER_DELAY指定)。

          對(duì)于有多塊網(wǎng)絡(luò)接口的salve機(jī)器可指定只使用其中某一個(gè)(通過(guò)CHANGE MASTER TO 語(yǔ)句中的 MASTER_BIND指定)

          新增log_bin_basename參數(shù)用于指定二進(jìn)制日志文件完整的路徑和文件名

          支持slave上多個(gè)線程并行執(zhí)行master上傳遞下來(lái)的事務(wù)。通過(guò) slave_parallel_workers指定slave上并發(fā)執(zhí)行事務(wù)的worker數(shù)量。這種并發(fā)是基于數(shù)據(jù)庫(kù)的,也即數(shù)據(jù)庫(kù)內(nèi)的操作是有先后順序的,主從上需以一致的順序執(zhí)行,但不同數(shù)據(jù)庫(kù)之間則不需要這種順序,也即一個(gè)worker可不必等待其他worker在更新完某個(gè)庫(kù)之后再更新某庫(kù)。

              
     Optimizer enhancements.
          優(yōu)化了SELECT ... FROM single_table ... ORDER BY non_index_column [DESC] LIMIT [M,]N;查詢性能
          實(shí)現(xiàn)了Disk-Sweep Multi-Range Read.有效減少了在大表且沒(méi)有緩存在緩存中的情況下在輔助索引上范圍掃描造成的隨機(jī)磁盤(pán)訪問(wèn)。采用的辦法是先掃描找出相關(guān)行關(guān)聯(lián)的key,然后依據(jù)主鍵將key排序,最終依據(jù)排好序的key回表取出數(shù)據(jù)。
          實(shí)現(xiàn)了ICP(Index Comndition Pushdowndown)。若沒(méi)有ICP,存數(shù)引擎層根據(jù)索引定位表中的行并返回給Server層然后在這里用WHERE從句中的條件對(duì)結(jié)果進(jìn)行過(guò)濾。若使用ICP,如果WHERE條件中的部分列可由索引中的字段進(jìn)行評(píng)估那么server層會(huì)將WHERE條件中的這一部分下推到存儲(chǔ)引擎層。引擎層進(jìn)行評(píng)估后只取出滿足要求的行。這樣可有效減少引擎訪問(wèn)表的次數(shù)和server訪問(wèn)引擎的次數(shù)。
          EXPLAIN支持 DELETE, INSERT, REPLACE和UPDATE,以前只支持SELECT,且可以以JSON格式輸出。
          處理FROM從句中的子查詢(派生表)更加高效。首先FROM后的子查詢的物化過(guò)程直到查詢執(zhí)行時(shí)需要這一部分的內(nèi)容時(shí)才進(jìn)行,另外查詢可能會(huì)在派生表上加索引以加快查詢。
          使用semi-join和物化策略優(yōu)化子查詢。
          使用BKA(Batched Key Access)join算法提升join性能。支持inner join、outer join、semi-join、nested outer joins和nested semi-joins。    
          新增tracing功能主要供開(kāi)發(fā)者使用。通過(guò)一些列 optimizer_trace_xxx 變量和 INFORMATION_SCHEMA.OPTIMIZER_TRACE來(lái)提供

     Condition handling.
          可通過(guò)GET DIAGNOSTICS語(yǔ)句獲取各種診斷信息

     Data types.
          對(duì)于TIME、DATETIME、TIMESTAMP類型的值支持小數(shù)的秒,最多可支持毫秒級(jí)別(也即6位的精度)。
          之前的版本中每個(gè)表至多只有一個(gè)TIMESTAMP列可以初始化為當(dāng)天日期時(shí)間(DEFAULT CURRENT_TIMESTAMP)或者更新至當(dāng)天日期時(shí)間( ON UPDATE CURRENT_TIMESTAMP)。新版本的中取消了此限制.另外,之前只有TIMESTAMP列可以使用DEFAULT CURRENT_TIMESTAMP和 ON UPDATE CURRENT_TIMESTAMP,現(xiàn)在datetime列也可以。
          之前版本中TIMESTAMP列定義中什么都不指定的話自動(dòng)的默認(rèn)為DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?,F(xiàn)在可以通過(guò) explicit_defaults_for_timestamp 變量關(guān)閉這一行為。

     Host cache.
          提供了更多有關(guān)導(dǎo)致連接錯(cuò)誤的原因的信息以及對(duì)host cache訪問(wèn)的改進(jìn),其中包含客戶端IP和主機(jī)名可用以避免DNS查詢。具體實(shí)現(xiàn)如下:
          增加了一系列 Connection_errors_xxx狀態(tài)變量,提供有關(guān)連接錯(cuò)誤的信息,這些信息是全局的表示所有連接的各類錯(cuò)誤信息的聚合,不是針對(duì)于某個(gè)特定IP地址。
          performance_schema庫(kù)新增host_cache表且有更多的關(guān)于錯(cuò)誤信息的計(jì)數(shù)字段來(lái)track各類錯(cuò)誤(非針對(duì)特定IP的錯(cuò)誤),這樣一來(lái)便可通過(guò)查詢?cè)摫淼弥卸嗌僦鳈C(jī)被緩存、哪些主機(jī)發(fā)生了哪類錯(cuò)誤、連接錯(cuò)誤量有多接近max_connect_errors限制。
          可通過(guò) host_cache_size調(diào)整host cache大小


     OpenGIS.
          原生實(shí)現(xiàn)了OPENGIS規(guī)范定義的測(cè)量?jī)蓚€(gè)幾何值之間關(guān)系的一系列函數(shù)。

降級(jí)
     ERROR_FOR_DIVISION_BY_ZERO, NO_ZERO_DATE和NO_ZERO_IN_DATE 幾個(gè)sql mode 不贊成使用,MySQL5.7中這些值不會(huì)有任何影響,效果會(huì)被包含在strict SQL mode中((STRICT_ALL_TABLES 或 STRICT_TRANS_TABLES)。MySQL升級(jí)時(shí)要注意這些問(wèn)題。確保新版本中的SQL MODE不會(huì)影響應(yīng)用。

     GROUP BY中的隱式排序不贊成使用,這屬于有MySQL的一個(gè)擴(kuò)展,可能在將來(lái)版本中出于性能考慮被移除。所以最好使用ORDER BY語(yǔ)句明確指明排序。

     不推薦使用4.1之前版本的密碼和mysql_old_password認(rèn)證插件,不安全。為防止使用舊版本密碼哈??蓪ecure_auth 開(kāi)啟。對(duì)于DBA 建議將使用mysql_old_password 認(rèn)證插件的賬戶轉(zhuǎn)為使用 mysql_native_password認(rèn)證插件。

     不建議使用OLD_PASSWORD()和old_passwords=1來(lái)生成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 變量。這些都可能在將來(lái)的版本中移除。

     使用 --lc-messages-dir 和 --lc-messages 代替--language(用于指明錯(cuò)誤信息使用的語(yǔ)言)。

     不建議使用 ALTER IGNORE TABLE。

     不建議使用 msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, mysql_waitpid, mysql_zap, mysqlaccess 和 mysqlbug這些工具。

     不建議使用mysqlhotcopy工具。


移除
     --log選項(xiàng),使用 --general_log 和 --general_log_file=file_name 代替。
     --log-slow-queries 選項(xiàng)。使用 --slow_query_log以及 --slow_query_log_file=file_name 代替。
     --one-thread選項(xiàng)。用 --thread_handling=no-threads 代替。
     --safe-mode。
     --skip-thread-priority。
     --table-cache。使用table_oopen_cache變量代替。
     移除--init-rpl-role、--rpl-recovery-rank options選項(xiàng), 和rpl_recovery_rank、Rpl_status狀態(tài)變量。
     取消engine_condition_pushdown 變量,改為optimizer_switch變量中的一個(gè)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語(yǔ)句替換為 RESET MASTER和 RESET SLAVE.
     SLAVE START和SLAVE STOP替換為START SLAVE和STOP SLAVE。
     取消SHOW AUTHORS和SHOW CONTRIBUTORS.
     取消SET 命令中的OPTION和ONE_SHOT修飾符。
     不允許加在存儲(chǔ)過(guò)程、存儲(chǔ)函數(shù)中將參數(shù)或者本地變量設(shè)置為DEFAULT( SET var_name = DEFAULT ).但可以將系統(tǒng)變量設(shè)置為DEFAULT。
     移除 SHOW ENGINE INNODB MUTEX。

感謝各位的閱讀!關(guān)于“MySQL5.6中新增特性、不推薦使用的功能以及廢棄的功能有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI