なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

MySQL

RDS for MySQLで変更すべきパラメータチューニング

呼ばれたきがしたので soudai.hatenablog.comなお、InnoDB限定のお話ですよ。MyISAMを(システムテーブル以外で)使ったことない若輩者なので。ちょっと余裕がないこともあり、思いつく最小限のことだけ書きます。追加で思いついたら後ほど&温かいフォロー…

MySQL 8.0.14でSELECT COUNT(*)は、バッファに載っていても載っていなくても加速する! - 「innodb_parallel_read_threads」検証その5

MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2 - なからなLife MySQL 8.0.14で全件 COUNT(*)でも加速…

MySQL 8.0.14でSELECT COUNT(*)がパーティションテーブルでも加速する! - 「innodb_parallel_read_threads」検証その4

ココまでのおさらい MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2 - なからなLife MySQL 8.0.14で全…

MySQL 8.0.14で全件 COUNT(*)でも加速しない!?- 「innodb_parallel_read_threads」検証その3

MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2 - なからなLife の続きです。まさかの、ネガティブ情…

MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2

「その1」と真逆のタイトル atsuizo.hatenadiary.jp の続きです。要するに、innodb_parallel_read_threadsの効果がないケースの話です。いや、思った以上に、効果がない。。。 というわけで、暗い感じのスタートになりましたが、前回の続きで 「3.「innodb_…

MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1

それは突然やってきた MySQL 8.0.14がGAされました。dev.mysql.comまあ、MySQLは結構な頻度でリリースがありますし、「GAとはなんぞや」との名言が生まれる程度に、マイナーリリースでも機能が増える、パラメータが増える、既存パラメータのデフォルト値が変…

MySQLをAWS RDSで使うときに注意すること

MySQL Casual Advent Calendar 2018 - Qiita 14日目の記事です。MySQLネタで書くと、Casualといいつつ、わりとCasualじゃない話になりがちなので、Casualレベルのお話を。 いや、あんまり優しくない制限の話なんだけど。。。 AWS Relatioal Database Service…

Waiting for table metadata lockの対処の仕方、おさらい。

MySQL Casual Advent Calendar 2018 - Qiita 8日目の記事です。 駆け込み。 やきなおしです。 わりとニーズがあるらしく、このネタで過去エントリにちょいちょいアクセスがくるので、とにかく急いでいる人用に、シンプルにまとめました。 MySQL5.6、5.7で使…

MySQLへのJDBC接続で、とあるバグを踏むまでの話 -(3)古いmariadb-client-javaにて、ヤバイ動き 

3エントリに渡ってお送りしています (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き MySQL本体同様、JDBCドライバにもforkプロダクト「MariaDB Connector/J(mariadb-client-j…

MySQLへのJDBC接続で、とあるバグを踏むまでの話 -(2)「Connector/J」は結構賢い

3エントリに渡ってお送りしています (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き Javaで開発するときにお世話になるヤーツ MySQLをDBとして採用したとき、アプリケーション…

MySQLへのJDBC接続で、とあるバグを踏むまでの話 -(1)「max_allowed_packet」の基本的な働き

3エントリに渡ってお送りいたします (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き 概要:max_allowed_packetとは 平たく言うと、MySQLのクライアントーサーバー間の通信のパ…

MySQL Workbenchで、Spatial Functionの結果を図で表示する

「できるらしい」という話だけで、誰も触ってなかった? clubmysql.connpass.com に参加して、坂井さんからGISにまつわるお話をたっぷり伺ってきました。で、坂井さんも、「MySQL WorkbenchがGIS対応してるらしいって聞いたことがあるけど、触ったこと無い」…

SELECT文をタイムアウト強制終了させる「MAX_EXECUTION_TIME」使ってる?

この記事はMySQL Casual Advent Calendar 2017 - Qiitaの9日目のエントリとなります。 実行が長引いたSELECT文を強制終了させるヤーツ MySQL5.6まで、正常に処理が進んでいて遅いSELECTをタイムアウトさせるシステム変数はありませんでした。 正常に処理が進…

MySQLの「Communications link failure...」の解決方法を調べていて、よく見つけるヤツ

この記事はMySQL Casual Advent Calendar 2017 - Qiitaの5日目のエントリとなります。 みんなだいすきお困りの、アレです。 Oracleだと「ORA-03113:通信チャネルでファイルの終わりが検出されました。」っていう、酷い日本語*1で有名なヤツがあるけど、MySQL…

MySQL 8.0をカジュアルに立ちあげる

この記事はMySQL Casual Advent Calendar 2017 - Qiitaの2日目のエントリとなります。 きっかけ、前提 MySQL8.0、まだRCの状態だけど、色々な機能追加の話題が盛り上がっている中でのAdvent Calendarでもあるので、MySQL 8.0新機能検証なネタを投下してくれ…

MySQLのGLOBAL_STATUSとGLOBAL_VARIABLES

今更MySQL5.7を扱うにあたって MySQL5.6とMySQL5.7のパラメータ差分をあらためて見直してたら、「show_compatibility_56」という、プロダクトのアーキ移行期間にありがちな「いかにも」な名前のパラメータがありまして。 これは何? 「SHOW [GLOBAL] STATUS…

MySQLの「CREATE TABLE .. SELECT/LIKE」の挙動の違い

テーブルの複製のとき、お世話になります。 ちょっとしたバックアップ目的や、検証作業用にテーブルを複製するシーンはよくあります。 MySQLでは、テーブルの複製のためのコマンドが大きく2種類あるので、その違いを確かめた結果のお話です。 CREATE TABLE …

MySQLのサーバーステータス変数の監視の話

mysqlクライアントから定期実行してたし、計算は別途やってた。 SHOW [GLOBAL ]STATUSで取れるのは、「サーバー起動からの累積値」または「コマンド発行時の瞬間値」という仕様のため、前者について推移を知りたいときは、 ・定間隔でコマンド発行してファイ…

MySQLでmetadata lockにハマりやすいパターン

しばらくブログエントリあげてませんでしたが、引き続きMySQL関係のお仕事していたので、復活弾もやっぱりMySQLネタです。 そもそも 「metadata lockって何よ?」 とか 「Waiting for Table metadata lockでハマったらどうしたら良いの?」 って話は、過去に…

MySQLのセッションタイムアウトの制御

timeout系パラメータはいくつかあるけれど 新規接続時のタイムアウト(connect_timeout)ではなく、一度確立した接続がタイムアウトで切断される現象に影響するタイムアウト設定のお話。 ERROR 2013 (HY000): Lost connection to MySQL server during query…

MySQLの文字列型の扱い

先日、この記事が公開されていたので gihyo.jp アレ?って思ってドキュメント見直して、手元の環境でも実行してみました。 確かに「その通り」だったのだけど、ドキュメントに書いてあるとおりのこと、かつ、「その一部」の話だなーとおもったので、もうちょ…

MySQLでキャラクタセットを変更する

キャラクタセットはカラムレベルで持っている Oracleの場合はデータベースレベルで持っているキャラクタセット定義ですが、MySQLの場合、キャラクタセットはカラムレベルで持っています。ですので、同じデータベース、テーブルの中で、カラムによって別々の…

MySQLで幸せになれるヤツの続き-列名の行は都度いらなくない?

atsuizo.hatenadiary.jp で挙げたワンライナーを見て、タイトルのような疑問を持った人もいるかと思いますので、そのへんの補足です。 お好みでどうぞ 「-N」オプションを付与すると、SQL実行毎に表示される列名の行を除外して出力させることができます。 な…

MySQLで幸せになれるヤツの続き-パスワードを隠蔽する方法

パスワードをゴニョゴニョする前に atsuizo.hatenadiary.jpで パスワードを生テキストで書くなって人はゴニョゴニョしてください。 って書いた話の件ですが、なんでこんな話になるの、ってところをまず押さえましょう。 mysqlクライアントでのログイン方法あ…

MySQLに対して定期的に実行して結果を保存しておくと幸せになれるアレ

ワンライナー mysql -u ユーザ -pパスワード -h 接続先 -e "SQL文" | sed -e 's/\t/\" \"/g' | sed -e 's/^/\"/g' | sed -e 's/$/\"/g' | sed -e "s/^/$(date '+%Y%m%d %H:%M:%S') /g" >> ファイル パスワードを生テキストで書くなって人はゴニョゴニョして…

お兄さんとの約束は守ろう!(MySQLのtx_isolationとbinlogの話)

MySQL Casual Advent Calendar 2016 - Qiita 21日目の記事です。 穴があったら埋めたいタイプの人です。5回目。。。 なお、大トリの25日が空いているみたいですが、3年連続であの方でしょうか?(・_|襖| ある日、MySQLおじさんお兄さんに、、、 って言われた…

MySQLのChar型のデータサイズについて小ネタ

MySQL Casual Advent Calendar 2016 - Qiita の 18日目です。がんばった。もう小ネタしか出てこない。 MySQLのchar型宣言時の数字は「データサイズ」ではなくて、「文字数」 っていうのは、ワリと有名。 Oracleからやってくると戸惑うところではあるけど、ワ…

JOIN ON で絞り込み条件を入れるのと、JOIN ONの後WHERE句で絞り込み条件を入れるのとでは、結果が違う件

MySQL Casual Advent Calendar 2016 - Qiita 12日目の記事です。 まさかの3回目。もうムリ。。。 JOIN ON句で結合条件ではなく絞込条件を書くことができることを、知らなかったのです。 具体的な名称がわからない&検索にもヒットしにくいので、勝手に名前を…

MySQLのトランザクション制御がキモい話

MySQL Casual Advent Calendar 2016 - Qiitaの5日目の記事です。AdventCalendar自体初参加でドキドキ。 トランザクションの開始は、BEGINしたときじゃない! MySQLでは、BEGIN(START TRANSACTION。長いので、以下、特筆すべき場合以外は「BEGIN」で)を宣言…

MySQLで複合列PKなテーブルに対するWHERE条件でINを使うと、実行計画が変わる?

何言っているかわかんねえよ。 と思うので、事例で語る。なお、この事象が出たのは、MySQL5.6.23です。 実験1:PK列が1つのケース 準備 こんな感じでテーブルとデータを用意します。 mysql > create table test_in_exp_tbl( -> col1 int(11) not null, -> co…