MySQL
長くなりそうなので、先に要点だけ。 Twitterで先日の「RDSの方がAuroraより速いケース」の件、とりあえず調べたい範囲のベンチマーク取れた。元記事って2000万件*5=1億件を1クライアントで処理してるのな。で、普通に?HammerDB TPC-Cで多重度上げてもRDSが…
穴があったら埋めたい! ということで、埋まっていたと思ったら空いていたMySQL Advent Calendar 2020 - Qiita の22日目、急遽登板です。小ネタにしては、エビデンス収集・整理に時間のかかるネタになってしまいましたが。 データ投入順とプライマリキーの関…
MySQL Advent Calendar 2020 - Qiita の11日目の記事であり、同時に、PostgreSQL Advent Calendar 2020 - Qiita の11日目の記事です。両データベースについての挙動差のお話です。 MySQLとRAND関数の挙動の整理 その1 - なからなLife MySQLとRAND関数の挙動…
MySQL Advent Calendar 2020 - Qiita の4日目の記事です。 昨日の記事 MySQLとRAND関数の挙動の整理 その1 - なからなLife の続きです。よって、前提条件も同じで MySQL 5.7.32 (エビデンスはこちらで取った) MySQL 8.0.22 CentOS7 on VirtualBox での挙動…
MySQL Advent Calendar 2020 - Qiita の3日目の記事です。昨年のアドベントカレンダーは1つも記事も書かなかったので、今年は1つくらいは。。。 (ていうか、アドベントカレンダーのタイトルがMySQLだったりMySQL Casualだったりしてるのね) MySQLでテーブ…
※初回執筆時から、追記・修正があります。MySQL Shell 8.0.21で存在した各種制約は、MySQL Shell 8.0.22によって緩和されています。 MySQL ShellのdumpInstance()/dumpSchemas()とは MySQLからのダンプエクスポートといえば、mysqldumpでした。しかし、シリ…
MySQL8.0から、SELECT FOR UPDATE NOWAIT/SKIP LOCKEDがサポートされました。 パチパチパチ、といっても、MySQL8.0自体は2018-04-19にGA(8.0.11)していますし、この機能自体は8.0.1(2017-04-10, Development Milestone)のリリースノートですでに登場して…
7/13 に MySQL 8.0.21 がリリースされました。 リリースノートを読んでいて「Functionality Added or Changed」の3つ目に InnoDB: Redo logging can now be enabled and disabled using ALTER INSTANCE {ENABLE|DISABLE} INNODB REDO_LOG syntax. This funct…
超親切設計な、インスタンスサイズからの自動計算、だけど パラメータグループには、デフォルトでDBInstanceClassMemoryからの自動計算になっていて、インスタンスサイズの変更時に手動でパラメータ変更をする必要がないような超親切設計になっています。し…
エビデンス的なものを貼り付けてもイマイチ伝わらないので、文字通り雑記レベルで。 複数セッション用意してタイミングに依存した実験の結果を伝える時、難しいよね、ってことで、ダラっとした解説になってしまいます。 MySQLのサーバーに重いクエリを投げつ…
祝:8.0.18リリース! 今回のメンテナンスリリースは盛りだくさんです。詳細は、リリースノートを読んでいただくか、今度の9/21(月)に更新されるであろうMySQL Weeklyを確認してください。リリース前から話題沸騰だったのは、「NestedLooop一本勝負っだったM…
「10回分の目次」的な何か 2週間平日連載?で10回に分けて書いてきた「HammerDBをCLIで使う」のエントリのリストです。(1)環境構築 (2)MySQLにTPC-Cを実行してみる (3)PostgreSQLにTPC-Cを実行してみる (4)OracleにTPC-Cを実行してみる (5)Re…
基本的な流れ ここからは、分析系クエリのベンチマーク「TPC-H」です。 やりかたは、TPC-Cとほとんど同じなので、淡々と進めていきます。 TPC-Hは、定められた22本1セットの分析クエリ(要はMySQLがあまり得意としない複雑でデカイSQL)についての処理性能…
基本的な流れ どのDBに対して、どのワークロードをかける場合でも共通ですが、まずは「MySQLにTPC-C」を実行して、その流れを見ておきます。 GUIで一度経験しておくと、イメージがよりつかみやすいかもしれません。 DB種類選択 ベンチマーク種類選択 スキー…
TPC-C、TPC-Hワークロードを各種DBMSに対して実行できるベンチマークソフト「HammerDB」 HammerDBは、フリーでOSSなDBMSベンチマークソフトです。 各DB専用に用意されたベンチマークソフトではなく、同じ条件(同じソフト)で負荷をかけて性能を見たいときに…
Jupyter Notebook環境構築エントリとか、世の中に溢れかえっているのは承知の上なんで、ほぼ自分用の備忘です。 未来の自分に語りかけてます。この手順、絶対忘れる。。。 皆さんよく使うゴリゴリのPython+pandasなど各種ライブラリではなく、「RDBMSの中身…
端的にいうと SELECTのWHEREの条件の「右辺」に、RAND()やSYSDATE()のような非決定性関数を使うと、想定外のことが起こる。 戻ってくる行数が想定と異なる。 Indexが効かなくなる。(テーブルフルスキャン走る) どっちもなかなかのインパクトです。 追記:2…
呼ばれたきがしたので soudai.hatenablog.comなお、InnoDB限定のお話ですよ。MyISAMを(システムテーブル以外で)使ったことない若輩者なので。ちょっと余裕がないこともあり、思いつく最小限のことだけ書きます。追加で思いついたら後ほど&温かいフォロー…
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」検証その1 - なからなLife MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2 - なからなLife MySQL 8.0.14で全…
MySQL 8.0.14でSELECT COUNT(*)が加速する!- 「innodb_parallel_read_threads」検証その1 - なからなLife MySQL 8.0.14でSELECT COUNT(*)が加速しない!- 「innodb_parallel_read_threads」検証その2 - なからなLife の続きです。まさかの、ネガティブ情…
「その1」と真逆のタイトル atsuizo.hatenadiary.jp の続きです。要するに、innodb_parallel_read_threadsの効果がないケースの話です。いや、思った以上に、効果がない。。。 というわけで、暗い感じのスタートになりましたが、前回の続きで 「3.「innodb_…
それは突然やってきた MySQL 8.0.14がGAされました。dev.mysql.comまあ、MySQLは結構な頻度でリリースがありますし、「GAとはなんぞや」との名言が生まれる程度に、マイナーリリースでも機能が増える、パラメータが増える、既存パラメータのデフォルト値が変…
MySQL Casual Advent Calendar 2018 - Qiita 14日目の記事です。MySQLネタで書くと、Casualといいつつ、わりとCasualじゃない話になりがちなので、Casualレベルのお話を。 いや、あんまり優しくない制限の話なんだけど。。。 AWS Relatioal Database Service…
MySQL Casual Advent Calendar 2018 - Qiita 8日目の記事です。 駆け込み。 やきなおしです。 わりとニーズがあるらしく、このネタで過去エントリにちょいちょいアクセスがくるので、とにかく急いでいる人用に、シンプルにまとめました。 MySQL5.6、5.7で使…
3エントリに渡ってお送りしています (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き MySQL本体同様、JDBCドライバにもforkプロダクト「MariaDB Connector/J(mariadb-client-j…
3エントリに渡ってお送りしています (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き Javaで開発するときにお世話になるヤーツ MySQLをDBとして採用したとき、アプリケーション…
3エントリに渡ってお送りいたします (1)「max_allowed_packet」の基本的な働き (2)「Connector/J」は結構賢い (3)古いmariadb-client-javaにて、ヤバイ動き 概要:max_allowed_packetとは 平たく言うと、MySQLのクライアントーサーバー間の通信のパ…
「できるらしい」という話だけで、誰も触ってなかった? clubmysql.connpass.com に参加して、坂井さんからGISにまつわるお話をたっぷり伺ってきました。で、坂井さんも、「MySQL WorkbenchがGIS対応してるらしいって聞いたことがあるけど、触ったこと無い」…
この記事はMySQL Casual Advent Calendar 2017 - Qiitaの9日目のエントリとなります。 実行が長引いたSELECT文を強制終了させるヤーツ MySQL5.6まで、正常に処理が進んでいて遅いSELECTをタイムアウトさせるシステム変数はありませんでした。 正常に処理が進…