3101 件中 761 - 770 件を表示
« 前の 10 件 | 次の 10 件 »
MySQL 8.0 Descending index

MySQL8.0の機能を調べてまとめている。
Descending indexについて読んだまとめ。

dev.mysql.com

MySQL 8.0では、Descending index(DESC, 降順のindex)がサポートされるようになった。 これまではASC(昇順)のindexを逆順にスキャンすることはできたが、パフォーマンス上のペナルティがあった。 Descending indexを使うことで、降順のアクセスでも正順でスキャンすることができる。 optimizerはDESCを含むマルチカラムindexであってもコストを考慮してこれを利用してくれる。

サンプル

c1, c2カラムにasc, descの組み合わせでカラムを作った。
index名はasc, descの頭1文字をとってaかd

mysql> …
[さらに読む]
MySQL 8.0 Invisible indexes

MySQL8.0の機能を調べてまとめている。
invisible indexesについて読んだまとめ。

dev.mysql.com

MySQL 8.0からはinvisible indexesがサポートされる。

invisible indexはoptimizerに使われないindexのこと。 optimizerから見て、visible(利用可能)かinvisible(利用不可)かを選択できるようになった。 invisible indexを利用することで、indexを削除しても影響がないかを確認することが容易になる。
これは結構ありがたい機能で、行数が多かったり、更新頻度が高いテーブルではindexの削除・作成は非常にコストがかかるし、下手にindexを外すとクエリをつまらせてサービスダウンになることもある。

[さらに読む]
MySQL 8.0 Derived Table, Lateral Derived Table

MySQL8.0の機能を調べてまとめている。 Derived Table, Lateral Derived Tableについて読んだまとめ。

DERIVED TABLE

LATERAL DERIVED TABLESや8.0の新機能を説明する前に、DERIVED TABLEについて説明する

dev.mysql.com

DERIVED TABLEとはFROM句のscope内で作るテーブルのことで、例えばFROM句に書いたサブクエリのSELECT等がある。 構文としては以下で、

SELECT ... FROM (subquery) [AS] tbl_name [(col_list)] ...

JSON_TABLE()関数によってJSONカラムからderived tableを作ることもできる

SELECT * FROM JSON_TABLE(arg_list) [AS] tbl_name ...

このとき、

[さらに読む]
NOT NULL指定しないとカラムの確保するストレージサイズが1byte増える

NULLを許容するカラムをつくるとそれぞれのカラムで必要なストレージサイズが1byte増えていた。

以下はexplainでkey長を見てみた様子。 INTは4byteを確保する訳だけど、NULL (DEFAULT NULL)指定したら各カラムで1byte増えているのがわかる。

NULLABLEかの判定に1bit使っていて、丸められて1byte使っているとしたらNULLABLEなカラムがN個あるとして(N/8+1) byte余計に使うかと思ったらそれぞれのカラムで1byte増えてた。。。(idx8, idx9はその境界値が出たりしないかと思って作った)

mysql> CREATE TABLE `t7` (
    ->   `id` int NOT NULL AUTO_INCREMENT,
    ->   `c1` int DEFAULT NULL,
    ->   `c2` int DEFAULT NULL,
    ->   `c3` int DEFAULT NULL,
    ->   `c4` int DEFAULT NULL,
    ->   `c5` int DEFAULT NULL,
    ->   `c6` int DEFAULT NULL,
    ->   `c7` int DEFAULT NULL,
    ->   `c8` …
[さらに読む]
MySQL 8.0 GROUP BY関連の新機能

MySQL8.0の機能を調べてまとめている。
タイトルどおりGROUP BY ... WITH ROLLUPについてドキュメントを読んだまとめ。

GROUP BYで指定したカラム自体の全体の集約(超集約: super-aggregate)結果を返すWITH ROLLUP句で大きく2点の改良と機能追加があった.

  1. ORDER BY及びDISTINCTWITH ROLLUPと同時に指定することができるようになった
  2. GROUPING()の導入。超集約によって発生したNULLなのかもともとNULLが入っていたものかを判別可能になった

WITH ROLLUPによるsuper-aggregate

そもそもWITH ROLLUPによるsuper-aggregateがどういったものか示す

[さらに読む]
MySQL 8.0 新機能 Window Function

MySQL 8.0の新機能について調べてまとめています。 今回はWindow関数に関する章(https://dev.mysql.com/doc/refman/8.0/en/window-functions.html )を読んだまとめです。

window関数はクエリの結果から行ごとにその行に関連する計算を行う機能。
GROUP BYでは集約操作の集約するカラムの値ごとに1行の結果が返ってくるのに対し、window関数では行ごとにwindow関数による計算され結果が返る。

例えば(https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html より)

mysql> SELECT
         year, country, product, profit,
         SUM(profit) OVER() AS …
[さらに読む]
MySQL 8.0新機能 CTE (Common Table Expression)

MySQL 8.0の新機能について調べてまとめました。
この記事は公式ドキュメントの以下のページの読んだまとめです。

dev.mysql.com

サンプルのクエリもほぼドキュメントのものですが、手元の8.0.15で実行した結果をつけている場合もあります。場合によって説明の順番を組み替えたり、補足したりしています。

CTE

CTE(Common Table Expression)とは1つのステートメントのスコープ内にできる名前付きの一時結果のこと。 この一時結果は複数回またはCTE内で …

[さらに読む]
ストレージエンジンをインストールしている環境でのリストアではまりがちなこと

TL;DR

  • plugin_dir に必要な .so ファイルを置いておくのは大前提
  • mysqldump から戻す時は、戻す前に自分で INSTALL PLUGIN
  • 物理バックアップから戻すときは基本的にそのまま戻して起動すればおk

周囲1mくらいで2回聞かれたのでメモしておく。
対象は ストレージエンジンプラグイン (デーモンプラグインである innodb_memcached とか mysqlx は対象外)かつサーバーデフォルトで有効になって いない もの( InnoDB, MyISAM などは対象外)、つまりだいたい Mroonga, TokuDB, RocksDB あたりをターゲットとして見ている。 …

[さらに読む]
RDS for MySQLで変更すべきパラメータチューニング

呼ばれたきがしたので

soudai.hatenablog.com

なお、InnoDB限定のお話ですよ。MyISAMを(システムテーブル以外で)使ったことない若輩者なので。

ちょっと余裕がないこともあり、思いつく最小限のことだけ書きます。追加で思いついたら後ほど&温かいフォロー(というマサカリ?)歓迎。

checkpointに影響がある値 innodb_log_file_size

Redoログのファイルサイズです。

生 …

[さらに読む]
gh-ostを中断させたらどうなるのかの試み

gh-ost 3日目。 gh-ostを中断させたらどうなるのか確認してみる。 pt-osc はデフォルトでは中断する時に

  • テンポラリーテーブル(gh-ost的には「ゴーストテーブル」) が残存する
  • テンポラリーテーブルに対するトリガーも残存する

な訳だがgh-ostはいかがなものか。 取り敢えず Ctrl + Cで終了させてみる

$ gh-ost --database=mysqlslap --table=t1 --alter="ADD KEY (intcol1)" --host=127.0.0.1 --port=21800 --user=msandbox --password=msandbox --allow-on-master --execute
..
^C
  • *_ghc*_gho なテーブルが残った
master [localhost] {msandbox} (mysqlslap) …
[さらに読む]
3101 件中 761 - 770 件を表示
« 前の 10 件 | 次の 10 件 »