タグ

ブックマーク / qiita.com/hmatsu47 (7)

  • MySQLでオプティマイザトレースを使い、SQLの実行計画を確認してみる - Qiita

    mysql> USE cardi_test; Database changed mysql> EXPLAIN SELECT * FROM test_data WHERE flag = 0; +----+-------------+-----------+------------+------+---------------+----------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-----------+------------+------+---------------+

    MySQLでオプティマイザトレースを使い、SQLの実行計画を確認してみる - Qiita
  • MySQL小ネタ/JOINでCASEを使う場合にINDEXは使われるのか? - Qiita

    MySQLに限りませんが、JOINでCASEを使うことで、結合条件を変えることができます。 駆動表(外部表)または内部表のいずれかが「複数のサブタイプをまとめたテーブル」である場合にそのようなことをしたくなるのだと思いますが、このとき、結合処理にINDEXは使われるのか?というのが今回のテーマです。 ※MySQL 5.7.21で検証しました。 駆動表(外部表)にtype列がある(=複数のサブタイプを持つ)ケース 以下のようなテーブルを作成します。 ※カラムは可能な限り削ってあります。 mysql> CREATE DATABASE join_case_test; Query OK, 1 row affected (0.00 sec) mysql> USE join_case_test; Database changed mysql> CREATE TABLE join_outer (id i

    MySQL小ネタ/JOINでCASEを使う場合にINDEXは使われるのか? - Qiita
    atsuizo
    atsuizo 2018/02/02
    CASEで結合に使う列を切り替え、Oracleは内外表どちらでCASE使ってもIndex効いた記憶あり。
  • MySQL 5.7と8.0でロック状態を確認する(sys.innodb_lock_waitsビュー) - Qiita

    MySQL 5.1+InnoDB Plugin 1.0以降でのロック状態確認方法としては、こちらの記事が有名です。 MySQL InnoDBにおけるロック競合の解析手順(SH2の日記/SH2さん) 利用しているのがMySQL 5.6以前だったり、MySQL 5.7を利用していても複数バージョンが混在している環境では同一のクエリで確認できるメリットがありますので、今でもこれを使われている方が多いのではないかと思います(MySQL Casual Advent Calendar 2017の20日目でも、@soudai1025さんがビューの作成を勧められていました)。 なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか(そーだいなるらくがき帳/そーだいさん) 一方、MySQL 5.7では、sysスキーマにロック状態確認ができるビューとしてsys.innodb_lock

    MySQL 5.7と8.0でロック状態を確認する(sys.innodb_lock_waitsビュー) - Qiita
    atsuizo
    atsuizo 2018/01/08
    あとでまとめようとおもっていたやつだー。すげー助かる。
  • MySQL Connector/Jでプロパティをあれこれ変えてベンチマークその1:バッチ編 - Qiita

    MySQL Casual Advent Calendar初参戦記事、その1です。 昨日は@atsuizoさんの SELECT文をタイムアウト強制終了させる「MAX_EXECUTION_TIME」使ってる? でした。 私の記事は内容のわりに長くなりそうなので、読むのにツラくならないよう、3週に分けてお送りします。 0. 検証環境 Casualにやる、ということで、サーバに持って行くのをやめて、PCのIDE上でさらっと実行してみます。 そのため、環境が変わると結果がかなり変わるはずです。 PCのスペックなど IDE : Eclipse 4.7.1a(pleiades日語化) MySQL Community Server : Windows(x64)版 5.7.20 MySQL Connector/J : 5.1.44(Mavenリポジトリより取得) ※執筆時点で1つ古いヤツですが…。 my.

    MySQL Connector/Jでプロパティをあれこれ変えてベンチマークその1:バッチ編 - Qiita
    atsuizo
    atsuizo 2017/12/10
    すばらしい。現場のアプリエンジニアに読ませたい。
  • Amazon Auroraのレプリカとバッファキャッシュのウォームアップの関係について確かめてみた - Qiita

    先日、Amazon AuroraのレプリカのAuto Scalingが発表されました。 Amazon AuroraAurora レプリカの Auto Scaling をサポート これに関連する話題である方とツイートのやり取りをしていて、ふと、「レプリカとバッファキャッシュ(またはバッファプールキャッシュ…MySQLでいうところのバッファプール)について経験則でぼんやりと把握している挙動について再確認してみよう」と思い立ったので検証してみました(ちょっと雑ですが)。 ※今回、Auto Scalingのときの挙動については確認していません。 12/12追記: AUto Scalingについても試してみました。 Amazon AuroraMySQL互換) Auto Scalingで追加されたレプリカ(Reader)インスタンスのバッファキャッシュのウォームアップはどうなる? 1. 確認す

    Amazon Auroraのレプリカとバッファキャッシュのウォームアップの関係について確かめてみた - Qiita
    atsuizo
    atsuizo 2017/11/27
    これは役に立つまとめ!
  • MySQL(InnoDB)でBLOBカラムのデータを一括削除するときの注意点(バッファプールに与える影響) - Qiita

    InnoDBで、添付ファイルなどをBLOBカラムとして含む、データサイズの大きなレコードを、まとめて削除するときの注意点です。 なお、これらのカラムの保存領域も含めて、すべてカバーできるだけのバッファプール容量を確保している場合は気にする必要はありません。 ※要は、「UPDATE/DELETE時、既に不要なはずのBLOB値がバッファプールに読み込まれることによって、必要なデータページがバッファプールから追い出される問題」です。 長いVARCHARやTEXTも同様です。 テストの内容 シンプルな「メモ書き」と、必要であれば関連する「添付ファイル」を1個だけ添付できるような機能を想定します 容量確保のため、「添付ファイル」のみ○か月後に削除する運用を想定します MySQL(5.7)サーバのバッファプールは1GB確保しておきます バッファプールのウォームアップは無効です クエリキャッシュも無効で

    MySQL(InnoDB)でBLOBカラムのデータを一括削除するときの注意点(バッファプールに与える影響) - Qiita
  • MySQLのテーブルローテーションなど - Qiita

    ここにも書きましたが、近々社内の障害対応訓練があります。 訓練で使う(かもしれない)ネタをあげておかないとブーイングが出そうなので、非常にありがちな内容ですが、ここにあげておきます。 テーブル定義を見る まずはDESC。使うテーブルは前にあげたネタで使ったやつです。 mysql> USE cardi_test; Database changed mysql> DESC test_data; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | bigint(20) | NO | PRI | NULL | | | nam

    MySQLのテーブルローテーションなど - Qiita
    atsuizo
    atsuizo 2016/08/31
    DESCでEXPLAIN、CREATE TABLE ... LIKE構文、キモいな(褒めてる
  • 1