データベース内のすべてのテーブルがutf8mb4に移行されない限り、utf8接続を継続して使用する危険性はありますか?utf8mb4列でutf8接続を安全に使用できますか?
私はすべてのテーブルが移行されるまでutf8接続を維持すると考えました。
大規模なテーブル(数百GB)で変更するにはどのくらいの時間がかかりますか?
データベース内のすべてのテーブルがutf8mb4に移行されない限り、utf8接続を継続して使用する危険性はありますか?utf8mb4列でutf8接続を安全に使用できますか?
私はすべてのテーブルが移行されるまでutf8接続を維持すると考えました。
大規模なテーブル(数百GB)で変更するにはどのくらいの時間がかかりますか?
すべてのデータが3バイトのutf8サブセットにある限り、utf8とutf8mb4は同じです。
クライアントのエンコーディングを指定する接続パラメータ(SET NAMES
を含む)。列/テーブル定義には、列でどのようなエンコーディングが処理されるかが示されます。 MySQLはINSERT
またはSELECT
のように変換します。繰り返しても、すべてのデータがutf8サブセットである限り、変換は可能です(事実上ノーオペレーション)。
MySQLはあなたが文を挿入しようとした場合、変換を実行する方法のいくつかの例:
1«この絵文字は猫である» - テーブルUTF8でUTF8の接続には:MySQLは、文字から文字列を切り捨て4バイト:
«この絵文字»
2 - utf8mb4テーブルのUTF8に接続して:MySQLは "????"
«この絵文字との4バイト文字を置き換え????猫です
3 - utf8テーブルでutf8mb4接続で:MySQLは4バイト文字を "?"に置き換えます
«この絵文字? cat#
utf8mb4が必要であるが、接続と列の間に不一致がある場合の良い例です。 –