TL;DR
- ステートメントの権限評価が違う。
ALTER TABLE
はGRANT ALTER
が必要だが、OPTIMIZE TABLE
はGRANT SELECT, INSERT
だけで成立する -
innodb_optimize_fulltext_only
をONにしていない限りはどっちでもほぼ同じことが起こる
- ONにしている場合は違うことが起こる。後述。
-
OPTIMIZE TABLE には
OPTIMIZE LOCAL …
TL;DR
ALTER TABLE
は GRANT
ALTER
が必要だが、 OPTIMIZE TABLE
は GRANT
SELECT, INSERT
だけで成立する
OPTIMIZE LOCAL …
2024年8月の FOSS4G Tokai、MySQLの山﨑さんの発表後に「MySQLでは180度線を跨ぐ場合の距離など、正しく計算してくれるのか」という質問がありました。確か以前、(当然)それは大丈夫だったのを確認したよなぁと朧気に思いつつもその場でフォローはできなかったので、ご講演終了後に速攻で確認してみました。 結論 「ちゃんと、180度をまたいでも、最短の距離で計算してくれる(ぐるりと0度のほうを回って、つまり例えば 東経175度から0度を経由して西経175度までの距離を計算するわけではない)」 実例 赤道上での、東経165度から175度の距離、および東経175度から西経175度までの…
Background
MySQL 8.0 で utf8mb4
のデフォルトの COLLATION
(照合順序) が utf8mb4_general_ci
から
utf8mb4_0900_ai_ci
に変更されました。 COLLATE
を指定せず、SET NAMES <CHARSET>
を実行すると、そのキャラクタセットのデフォルトの collation が利用されます。
つまり、SET NAMES utf8mb4
の結果、5.7 まではクライアントのCOLLATIONとして
utf8mb4_general_ci
が使われますが、8.0 からは
utf8mb4_0900_ai_ci
が使われます。
-- MySQL 5.7 だと utf8mb4_general_ci mysql> SET NAMES utf8mb4; Query OK, 0 rows affected (0.00 …[さらに読む]
6月29日に開催されたオープンソースカンファレンス2024北海道(OSC2024 Hokkaido)に参加してきました。 今回は日本MySQLユーザ会(MyNA)としてのブース参加とセミナー1枠、そして OSGeo.JPとしてのブース出展のお手伝い(ほとんど何もしてない)でした。event.ospn.jp MySQLユーザ会のほうは緩いユーザ会なので、ブースも「談話コーナーです」という感じで、何か知りたいことがある人がいれば説明するよ、というスタンスでやってきた時期も長かったのですが、最近は少しだけ力を入れて、説明スライドを流したりすることを試みています。展示用の荷物を送って送り返すだけで数千…
5月16日にオラクルのMySQLチームさんが開催してくれた『ついに正式リリース!MySQL 8.4 LTS (Long-Term Support) の全容 』に参加してきました。 リアル開催、本当に良い。あちこちから「MySQLが」「InnoDBが」「binlogが」と聞こえてきて、なんとなくほっとします。 mysql-tech-tour.connpass.com 梶山さんによる2時間に亘る濃厚な『MySQL 8.4 LTSの全容ご紹介』。淡々としたタイトルですが、今時点で手に入る最高にまとまった最高にわかりやすい説明でした。 そういえば資料、どこで公開されたんだっけ。ダウンロードしそこねちゃ…
MySQLのバージョン間のいろんな差分を見れる MySQL Parameters というのがあるんだけど、SQL 構文の差分を見れるようにしてみた。
たとえば、8.0 の最初のリリースの 8.0.11 と最後のリリースの 8.0.37 の構文の差分はここから見れる。 https://mysql-params.tmtms.net/statement/?vers=8.0.11,8.0.37
ソースは help コマンドの結果(実際には mysql.help_topic
テーブルから取得)。
たとえば ALTER EVENT
はこんな感じ:
mysql> help alter event; Name: 'ALTER EVENT' Description: Syntax: ALTER [DEFINER = user] EVENT event_name [ON SCHEDULE schedule] [ON COMPLETION [NOT] PRESERVE] [RENAME TO new_event_name] [ENABLE | DISABLE | DISABLE ON …[さらに読む]
TL;DR
FOREIGN KEY (col1, col2) REFERENCES table_name (col3,
col4)
の親側のカラムリスト、←で言うなら (col3, col4)
がユニーク制約がかかっていないと外部キー制約が作れなくなった?
親に (col3, col4, col5)
のユニークキーがあってもダメ。きっちり一致しないといけない。
親に (col3)
のユニークキーがあれば (col3,
col4)
も当然一意になるはずだけれどこの指定もダメ。
正規化の過程でできあがるテーブル分割とFOREIGN KEYは自然とPRIMARY …