114 件中 51 - 60 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: 8.0 (reset)
MySQL 8.0のSHOW TABLE STATUSが全然更新されない件

TL;DR

空っぽのテーブルを用意する。

mysql80 111566> SHOW TABLE STATUS\G
*************************** 1. row ***************************
Name: t1
Engine: InnoDB
Version: 10
Row_format: Dynamic
Rows: 0 …
[さらに読む]
MySQL 8.0.16にCHECK制約が来て、NOT ENFORCEDなんてものまでついてきた

TL;DR

  • MySQL 8.0.16 についに CHECK制約 が実装された
  • NOT ENFORCED なんてオプションが “MySQLっぽい”
  • ちなみにCHECK制約の追加はオンラインDDL不可、引っぺがすのはできる

最初のFeature Requestから15年、ついにMySQL 8.0.16にCHECK制約が実装された。

アルファベットしか入ってほしくない val カラムに対して、ひらがなの “さん” とかが入力されるのを制限できる、みたいなヤーツ。 …

[さらに読む]
MySQL 8.0.15現在、 SET PERSIST_ONLY にはあんまり手を出さない方が良いと思う

TL;DR

  • 手を出さない方がいいのはSET PERSIST_ONLYの話で、SET PERSISTは手を出してもいいと思う
  • SET GLOBAL, SET PERSIST には値をセットするためのバリデーター(各サーバー変数ごとにある)が用意されているが、 SET PERSIST_ONLY はそのバリデーターを通らないため、不正な値を突っ込んでもエラーになってくれない
  • mysqld を再起動しようとした時に、 mysqld-auto.cnfSET PERSIST, SET PERSIST_ONLY の保管先)に不正な値が突っ込んであるとそれを適用できなくて mysqld が起動してくれない
  • MySQL :: MySQL 8.0 Reference Manual :: 13.7.5.1 SET …
[さらに読む]
utf8mb4_0900_ai_ci の速度をどう見るか

TL;DR

  • MySQL 8.0からデフォルトの照合順序が latin1_swedish_ci から utf8mb4_0900_ai_ci になった
  • さすがに latin1 をそのまま使っているとは思えないけれど、 utf8mb4 だけで見てもデフォルトは utf8mb4_general_ci から utf8mb4_0900_ai_ci に変更になっている
  • 「思ったよりは遅くならない」と見るか、「そんなに遅くなるのか」と見るかは人による気がする

まずは等価比較。
それぞれ10億回繰り返しているので、1回当たりの時間はナノ秒単位になる。
あと、データは保管せずただ比較しているだけなので、単純にCPU勝負のワークロードになる。

mysql80 8> SELECT BENCHMARK(1000000000, '1' = '1' COLLATE utf8mb4_0900_ai_ci) AS utf8mb4_0900_ai_ci; -- …
[さらに読む]
mysql_native_password, caching_sha2_password の速度測り比べ

TL;DR

  • まずは mysql_native_password, caching_sha2_password, sha256_password それぞれを指定したアカウントを作ります。
CREATE USER yoku0825_native_password IDENTIFIED WITH mysql_native_password BY 'a';
CREATE USER yoku0825_caching_sha2 IDENTIFIED WITH caching_sha2_password BY 'a';
CREATE USER yoku0825_sha256 IDENTIFIED WITH sha256_password BY 'a';
[さらに読む]
MySQL 5.5とそれ以前の古いDATETIME型が残っているとMySQL 8.0が起動できない

mysqldが起動できないバグなのか、「 avoid_temporal_upgrade なんてことすると将来的にサポート対象外だよ」がドキュメントに記載されてないのかどっちだか迷っている。 MySQL Bugs: #93101: Failed to Populate DD tables when table has OLD-Style DATETIME column (need Doc) MySQL 5.6からDATETIME型のデータ構造が新しくなった。 日々の覚書: あなたのMySQL 5.6トレンド力をチェックする15の質問 MySQL 5.5とそれ以前で CREATE TABLE したテーブルは8バイトの旧DATETIME型、MySQL 5.6とそれ以降で CREATE TABLE

[さらに読む]
MySQL 8.0では「GROUP BYによる暗黙のソート」がされなくなるよ

MySQL 5.7の時点で既に宣言はされていた。 GROUP BY implicitly sorts by default (that is, in the absence of ASC or DESC designators), but relying on implicit GROUP BY sorting in MySQL 5.7 is deprecated. MySQL :: MySQL 5.7 Reference Manual :: 1.4 What Is New in MySQL 5.7 どういうことが起こるかというと、こう。

$ perl -ML -E 'for (my $n= 1; $n <= 10; $n++) { for (my $m= 1; $m <= 100; $m++) { printf("%d\t%d\n", $n, $m) } }' | sort -R > /tmp/seq

mysql80 165> CREATE TABLE t1 (n int, m int);
Query OK, 0 rows affected (0.05 sec)

mysql80 165> LOAD DATA INFILE '/tmp/seq' INTO TABLE t1;
Query OK, 1000 rows affected (0.09 sec)
Records: 1000 Deleted: 0 Skipped: 0 Warnings: 0

mysql80 165> SELECT * FROM t1 LIMIT 10;
+------+------+
| n | m …
[さらに読む]
mysql.userテーブルの認証周りのカラムあれこれ

TL;DR

version passwordカラム(CHAR(41) NOT NULL) authentication_stringカラム(TEXT NULL) pluginカラム 認証プラグインの選択
5.0.96 パスワードハッシュ カラムなし カラムなし ダイジェスト長
5.1.73 パスワードハッシュ カラムなし カラムなし ダイジェスト長
5.5.62 パスワードハッシュ 常に空文字 認証プラグイン
[さらに読む]
MySQLのロール周りのあれこれ

TL;DR

  • デフォルトロールはログイン時に有効化
  • mandatory_roles はログイン時に有効化されない、全ユーザーから SET ROLE できるロール
  • ロールのホスト部は意味を持たないような気がする( role@127.0.0.1 192.168.0.0 なアカウントにも割り当てができる)
  • activate_all_roles_on_login = ON にすると、デフォルトロールも割り当てたロールも mandatory_roles も全部いっぺんにログイン時に有効になる
ロールの有効化 ロールの作成 ロールの割り当て 割り当ての解除
ロール SET ROLE
[さらに読む]
MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける
$ mysql80 -h 127.0.0.1 -u yoku0825 --ssl-mode=disabled -p
Enter password:
ERROR 2061 (HY000): Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

このエラーになる条件。

  • caching_sha2_password プラグインを使っているアカウント
    かつ
  • まだサーバー側にSHA2キャッシュが作られていないアカウント
    かつ
  • サーバーの公開鍵を指定していない非SSLのTCP接続

この条件に合致しているとログインが転けて↑のエラーを食らう。 解決策1. caching_sha2_password プラグインをやめて mysql_native_password プラグインを指定する

mysql> ALTER USER yoku0825 IDENTIFIED WITH mysql_native_password BY 'new_password`;

解決策2. …

[さらに読む]
114 件中 51 - 60 件を表示
« 前の 10 件 | 次の 10 件 »