MySQL の歴史についてはすでにご存知の方も多いと思いますので、ここでは詳しく説明しません。以下は、製品特性の観点からのみ、開発プロセスのマイルストーンイベントを要約したものです。
推奨: 「mysql ビデオ チュートリアル 」
1995 年に、MySQL 1.0 は内部使用のみを目的としてリリースされました。
1996 年に、MySQL 2.x バージョンをスキップして、MySQL 3.11.1 がリリースされました。
1999 年に MySQL AB が設立されました。同年、Berkeley DB ストレージ エンジンを統合した MySQL 3.23 がリリースされました。このエンジンは Sleepycat によって開発され、トランザクションをサポートします。エンジンを統合する過程でソース コードが変更され、その後のプラガブル ストレージ エンジン アーキテクチャの基礎が築かれました。
2000 年に、ISAM は MyISAM ストレージ エンジンにアップグレードされました。同年、MySQL は GPL 契約に基づいてオープンソースになりました。
2002 年に、後の有名な InnoDB ストレージ エンジンを統合した MySQL 4.0 がリリースされました。 Innobase によって開発されたこのエンジンは、トランザクションと行レベルのロックをサポートしており、OLTP などの同時実行性の高いシナリオに適しています。
2005 年に MySQL 5.0 がリリースされ、カーソル、ストアド プロシージャ、トリガー、ビュー、XA トランザクションなどの機能のサポートが開始されました。同年、Oracle は Innobase を買収しました。
2008 年、Sun は MySQL AB を 10 億米ドルで買収しました。同年に MySQL 5.1 がリリースされ、タイマー (イベント スケジューラ)、パーティショニング、行ベースのレプリケーションなどの機能のサポートが開始されました。
2009 年、Oracle は Sun Microsystems を 74 億米ドルで買収しました。
2010 年に MySQL 5.5 がリリースされました。これには、次の重要な機能と更新が含まれています。
## ● InnoDB は、MySQL のデフォルトのストレージ エンジンとして MyISAM を置き換えます。 # マルチコア拡張により、マルチコア CPU を最大限に活用できます。 # InnoDB のパフォーマンス向上には、迅速なインデックス作成のサポート、テーブル圧縮、I/O サブシステムのパフォーマンス向上、PURGE 操作がメインスレッドから分離され、バッファ プールを複数のインスタンスに分割できることが含まれます。 # 半同期レプリケーション。 # 絵文字表現を保存するために使用できる utf8mb4 文字セットが導入されました。#● メタデータ ロックを導入します。
# パーティション テーブルの強化。2 つの新しいパーティション タイプ: RANGE COLUMNS と LIST COLUMNS。
# MySQL Enterprise Edition にはスレッド プールが導入されています。
# IO 読み取りおよび書き込みスレッドの数を構成できます (innodb_read_io_threads、innodb_write_io_threads)。これより前は、番号は 1 であり、構成できませんでした。
# ダーティ ページの更新数を制御する innodb_io_capacity オプションが導入されました。
2013 年に MySQL 5.6 がリリースされました。これには、次の重要な機能と更新が含まれています。
# GTID のコピー。
#● ロスレスコピー。#● レプリケーションの遅延。
# ライブラリ レベルに基づく並列レプリケーション。
# mysqlbinlog は binlog をリモートでバックアップできます。
# TIME、DATETIME、および TIMESTAMP は、小数秒をサポートするために再構築されました。 DATETIME のスペース要件も、以前の 8 バイトから 5 バイトに減少します。
#● オンライン DDL。 ALTER 操作で DML がブロックされなくなりました。#● トランスポータブル表領域。
# 統計情報の永続化。マスターとスレーブ間、またはデータベースの再起動後、同じ SQL の実行計画に差異が生じないようにします。
# 全文インデックス。
## InnoDB Memcached プラグイン。 # EXPLAIN を使用すると、DELETE、INSERT、REPLACE、UPDATE などの DML 操作の実行計画を表示できます。これまでは、SELECT 操作のみがサポートされていました。 # パーティション テーブルの機能強化。使用可能なパーティションの最大数を 8192 に増やし、パーティション化されたテーブルとパーティション化されていないテーブル間のデータ交換をサポートし、操作中にパーティションを明示的に指定します。 # REDO ログの合計サイズ制限が、以前の 4G から 512G に拡張されました。 # Undo Log は独立したテーブルスペースに保存できますが、ランダム IO であるため、SSD に配置するのが適しています。ただし、スペースの自動再利用はまだサポートされていません。 # データベースの再起動後に必要となる長いウォームアップ時間を回避するために、バッファ プールのステータスをダンプしてロードすることができます。 # InnoDB の内部パフォーマンスの向上には、カーネル ミューテックスの分割、独立したリフレッシュ スレッドの導入、および複数のパージ スレッドのセットアップが含まれます。## ● オプティマイザーのパフォーマンスが向上し、ICP、MRR、BKA などの機能が導入され、サブクエリが最適化されました。
MySQL 5.6 は、MySQL の歴史のマイルストーン バージョンであると同時に、運用環境で最も広く使用されているバージョンであると言えます。
2015 年に MySQL 5.7 がリリースされました。これには、次の重要な機能と更新が含まれています。
# グループ レプリケーション
# InnoDB クラスター
# マルチソース レプリケーション
## 強化された半同期 (AFTER_SYNC)##並列レプリケーションの WRITESET に基づいています。
# GTID レプリケーションをオンラインで有効にします。
# コピー フィルタリング ルールをオンラインで設定します。
# オンラインでバッファー プールのサイズを変更します。
# 同じコード化バイト長内で、VARCHAR のサイズを変更するには、一時テーブルを作成せずに、テーブルのメタデータを変更するだけで済みます。
# NUMA アーキテクチャ (innodb_uma_interleave) のメモリ割り当て戦略を設定できます。
# 透過的なページ圧縮。
# UNDO テーブルスペースの自動リサイクル。
# クエリ オプティマイザーのリファクタリングと機能強化。
# 現在実行中の SQL の実行計画 (EXPLAIN FOR CONNECTION) を表示できます。
# サーバー側でクエリを書き換えることができるクエリ リライト プラグインが導入されました。
# EXPLAIN FORMAT=JSON はコスト情報を表示するため、2 つの実行プランの長所と短所を直感的に比較できます。
# Oracle の関数インデックスに似た仮想列が導入されました。
## ● 新しいインスタンスでは、デフォルトでテスト データベースと匿名ユーザーが作成されなくなりました。 # ユーザー パスワード、パスワード有効期限ポリシーを変更し、ユーザーをロックするために使用できる ALTER USER コマンドの紹介です。 # mysql.user テーブルにパスワードを格納するフィールドが、password から authentication_string に変更されます。 # テーブルスペースの暗号化。 # パフォーマンス スキーマが最適化され、メモリ使用量が削減されます。 # パフォーマンス スキーマには多くのインストルメンテーションが導入されています。一般的に使用されるものには、MySQL のメモリ使用量を確認するために使用できるメモリ使用量計測、MDL の保持ステータスを確認するために使用できるメタデータ ロック計測、および MDL の進行状況を確認するために使用できる Stage Progress 計測が含まれます。オンライン DDL。 # 同じトリガー イベント (INSERT、DELETE、UPDATE) と同じトリガー時間 (BEFORE、AFTER) により、複数のトリガーを作成できます。以前は、トリガーを 1 つだけ作成できました。## InnoDB はパーティション テーブルをネイティブにサポートしていますが、以前は ha_partition インターフェイスを通じて実装されていました。
# パーティション表はトランスポータブル表スペース機能をサポートします。
# 統合された SYS データベースにより、MySQL 管理が簡素化され、異常な問題が特定されます。
# JSON タイプをネイティブにサポートし、多くの JSON 関数を導入します。
# 新しい論理バックアップ ツール mysqlpump が導入されました。これは、テーブル レベルのマルチスレッド バックアップをサポートします。
# 新しいクライアント ツール mysqlsh が導入されました。これは、JavaScript、Python、SQL の 3 つの言語をサポートします。 X DevAPI と AdminAPI の 2 つの API 前者は MySQL をドキュメント データベースとして操作でき、後者は InnoDB Cluster の管理に使用されます。
# mysql_install_db は、インスタンスの初期化に使用される mysqld --initialize に置き換えられます。
# systemd のネイティブ サポート。
# super_read_only オプションが導入されました。
# SELECT 操作のタイムアウト (max_execution_time) を設定できます。
## MySQL インスタンスは SHUTDOWN コマンドを通じてシャットダウンできます。 # innodb_deadlock_detect オプションが導入され、同時実行性が高いシナリオでは、このオプションを使用してデッドロック検出をオフにすることができます。 # オプティマイザー ヒントが導入され、ICP や MRR を有効にするかどうかなど、ステートメント レベルでオプティマイザーの動作を制御できます。これまでは、インデックス ヒントのみがありました。 # 以前の GIS アルゴリズムを置き換える Boost.Geometry の使用を含む GIS の機能強化により、InnoDB は空間インデックスのサポートを開始します。 2018 年に MySQL 8.0 がリリースされました。これには、次の重要な機能と更新が含まれています。#● ネイティブ InnoDB ベースのデータ ディクショナリが導入されました。データ ディクショナリ テーブルは mysql ライブラリにあり、ユーザーには表示されません。mysql ライブラリ内の他のシステム テーブルと同様に、データ ディレクトリの mysql.ibd ファイルに保存されます。 mysql ディレクトリには配置されなくなりました。
#● アトミック DDL。 # INFORMATION_SCHEMA が再構築され、一部のテーブルがデータ ディクショナリに基づいたビューに再構築されました。それまでは一時テーブルでした。 # PERFORMANCE_SCHEMA クエリのパフォーマンスが向上し、複数のインデックスが組み込まれました。#● 非表示のインデックス。
#● 降順のインデックス。##● ヒストグラム。
# 一般的なテーブル式。
# ウィンドウ関数。
##● 役割。 # リソース グループを使用すると、スレッドの優先順位とスレッドが使用できるリソースを制御できます。現在、管理できるリソースは CPU のみです。## innodb_dicate_server オプションが導入されました。これにより、サーバーのメモリに基づいて innodb_buffer_pool_size、innodb_log_file_size、および innodb_flush_method を動的に設定できます。
# 列をすばやく追加します (ALGORITHM=INSTANT)。
# JSON フィールドの部分更新 (JSON 部分更新)。
# 自動インクリメントされた主キーの永続化。
# 永続化可能なグローバル変数 (SET PERSIST)。
# デフォルトの文字セットが latin1 から utf8mb4 に変更されました。
# UNDO テーブルスペースはデフォルトで有効になっており、数量のオンライン調整 (innodb_undo_tablespaces) をサポートしています。 MySQL 5.7 ではデフォルトでは有効になっていないため、有効にしたい場合は初期化時にのみ設定できます。
## ● バックアップ ロック。 # REDO ログの最適化には、複数のユーザー スレッドがログ バッファに同時に書き込み、innodb_log_buffer_size のサイズを動的に変更できるようにする機能が含まれます。 # デフォルトの認証プラグインが mysql_native_password から caching_sha2_password に変更されました。## ● デフォルトのメモリ一時テーブルが MEMORY エンジンから TempTable エンジンに変更され、前者と比較して、後者は VARCHAR、VARBINARY などの可変長フィールドの可変長ストレージをサポートします。 MySQL 8.0.13 以降、TempTable エンジンは BLOB フィールドをサポートします。
# Grant は暗黙的にユーザーを作成しなくなりました。
## NOWAIT オプションと SKIP LOCKED オプションは、電子商取引シナリオにおけるホット行の問題を解決するために、SELECT ... FOR SHARE ステートメントと SELECT ... FOR UPDATE ステートメントに導入されました。 # 正規表現の強化。REGEXP_INSTR()、REGEXP_LIKE()、REGEXP_REPLACE()、REGEXP_SUBSTR() という 4 つの新しい関連関数が追加されました。# クエリ オプティマイザーは、実行計画を策定するときに、データがバッファー プールにあるかどうかを考慮します。これまでは、データはディスク上にあると想定されていました。
# ha_partition インターフェイスがコード層から削除されたため、パーティション テーブルを使用する場合は、InnoDB ストレージ エンジンのみを使用できます。
# SUPER 権限に代わる、より詳細な権限が導入されました。SUPER 権限を付与すると、警告が表示されるようになりました。
# GROUP BY ステートメントは暗黙的に並べ替えられなくなりました。
## MySQL 5.7 で導入されたテーブルスペース暗号化機能は、Redo ログと Undo ログを暗号化できます。## ● information_schema の innodb_locks テーブルと innodb_lock_waits テーブルは削除され、performance_schema の data_locks テーブルと data_lock_waits テーブルに置き換えられます。
# パラメータのソースと変更を記録するために、performance_schema.variables_info テーブルを導入します。
# クライアント エラー情報の統計情報を追加しました (performance_schema.events_errors_summary_xxx)。
# クエリの応答時間の分布をカウントできます (sys.ps_statement_avg_latency_histogram() を呼び出します)。
# カラム名の直接変更をサポートします (ALTER TABLE ... RENAME COLUMN old_name TO new_name)。
# ユーザーのパスワードにより、再試行ポリシー (再利用ポリシー) を設定できます。
# PASSWORD() 関数を削除します。これは、「SET PASSWORD ... = PASSWORD('auth_string')」コマンドではユーザー パスワードを変更できないことを意味します。
# クエリ キャッシュ モジュールがコード層から削除されたため、クエリ キャッシュ関連の変数と操作はサポートされなくなりました。
# BLOB、TEXT、GEOMETRY、および JSON フィールドでは、デフォルト値を設定できます。
# RESTART コマンドを使用して MySQL インスタンスを再起動できます。
上記のリリースは一般に GA バージョンを指すことに注意してください。
最後に、下の表をご覧ください。この表には、最近のメジャー バージョンのリリース時期と、この本の出版時点での最新のマイナー バージョンとそのリリースが示されています。時間。 。
https://en.wikipedia.org/wiki/MySQL#Release_historyテーブル内のデータから、
1. メジャー バージョンは約 3 年ごとにリリースされます。
2. 製品のサポート サイクルは通常 8 年です。
3. MySQL 5.5 は古いものだと思っていましたが、正式バージョンはまだ更新されています。
元のアドレス: https://www.cnblogs.com/ivictor/p/9807284.html以上がMySQL 5.6、5.7、および 8.0 の新機能をチェックしてください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。