中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-11-06 11:35:02 來源:億速云 閱讀:138 作者:小新 欄目:MySQL數據庫

這篇文章給大家分享的是有關MySQL5.6中新增特性、不推薦使用的功能以及廢棄的功能有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

新增
     Security improvements.

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

          通過內置sha256_password認證插件支持更強的賬戶密碼加密。

          mysql.user表新增password_expired用以標識密碼是否過期。可通過alter user語句設置密碼過期。

          通過 validate_password 插件實現密碼安全度檢查。

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

          在Unix平臺上mysql_install_db支持--random-passwords,可為初始root用戶生成強度更高的密碼并設置密碼過期、移除匿名用戶。

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

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

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

     InnoDB enhancements.
          開始支持全文索引。
          Online DDL(即一些ALTER TABLE操作無需拷貝表、不阻塞增刪改)。
          CREATE TABLE語句支持DATA DIRECTORY='directory' 可將file-per-table 下每個表對應的.ibd文件存放在數據目錄以外的其他目錄,提升了靈活性繼而可提升性能,比如將.ibd放在單獨的SSD盤。
          支持transportable tablespaces、允許單表空間(每個表的.ibd文件)動態導入導出。 FLUSH TABLE的FOR EXPORT從句可將buffer中未保存的變化刷到.ibd文件。之后可將.ibd文件拷貝和元數據文件拷貝至其他服務器實例(如SSD、HDD)。ALTER TABLE的DISCARD TABLESPACE和IMPORT TABLESPACE從句可將數據載入不同的MySQL實例。
          可通過innodb_page_size設置InnoDB頁大小(默認16KB可設置為8KB、4KB)以適應特定的負載和硬件來降低冗余、提升系能。
          Buffer Pool刷新算法得以改進以增強性能和并發性,可通過一系列參數進行調整。
          與memcached整合可使用NoSQL-style API來訪問數據避免解析和構建查詢計劃的開銷(適用于簡單查詢、更新等)。
          優化用的統計信息更加精確且可在服務重啟后保持并可控制采樣率。
          優化只讀事務對于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。

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临桂县| 安远县| 鱼台县| 格尔木市| 罗城| 东辽县| 龙胜| 赤水市| 梧州市| 厦门市| 孝感市| 乳山市| 西贡区| 资兴市| 遂川县| 宽城| 孟州市| 阳泉市| 房山区| 贡山| 集贤县| 巴青县| 大厂| 长治县| 大关县| 贡觉县| 朝阳县| 淮阳县| 桐庐县| 永丰县| 夏津县| 辽中县| 两当县| 资阳市| 云南省| 和田市| 新丰县| 金平| 左云县| 静宁县| 尉犁县|