MySQL InnoDB Pluginのデータ圧縮機能

InnoDB Pluginの面白い機能の一つに、データ圧縮機能があります。今回はその仕組みと効果について見ていきたいと思います。まずはグラフをご覧ください。 これはWikipedia日本語版のデータベースをダウンロードし、記事本文の格納されているtextテーブルをMy…

MySQL 5.4.1-betaリリース

出ました。 今回は This release does not differ from 5.4.0 except that binary distributions are available or all MySQL-supported platforms, including Windows binaries with scalability improvements enabled. ということで、これまで一部のプラッ…

Sergey氏がMonty Program ABに移籍していた件

Changed jobs, now at Monty Program AB Sergey Petrunia氏はMySQLのクエリオプティマイザの開発者です。参考のためにカンファレンス資料をいくつかリンクしておきます。 MySQL Conference & Expo 2009のセッション内容と配布資料(PDF) MySQL Conference & E…

MySQL InnoDBにおけるロック競合の解析手順

データベースの運用で避けられないのが、ロック競合によって起こるシステムトラブルへの対応です。「2時までに終わるはずのバッチ処理が朝になっても終わっていない」とか「負荷が高いわけでもないのにシステムが無応答になっている」といったトラブルが発生…

DBD::drizzleでMySQLに接続してみる

DrizzleのクライアントをCentOS 5.3に入れてPerl DBIでMySQL 5.1につないでみた日記。Drizzleって何?って方はIntroducing the Drizzle Projectをご覧ください。 Drizzle Client & Protocol LibraryからDownloadsと書いてあるリンクをたどって、libdrizzle-0…

MySQLのバグ曲線

先日ふとMySQLの品質を確認する方法はないだろうかと考えて、試しにリリースノートの情報をもとにバグ曲線を描いてみました。ソフトウェアの信頼度成長曲線とかゴンペルツ曲線などとも呼ばれているものです。 対象はMySQL 5.0.0〜5.0.27、5.0.28〜5.0.82(Ent…

MySQL 5.1.35リリース

出ました。5.1.35では47個の不具合が修正されています。 今回は3行クラッシャー、Bug#44151のご紹介です。 mysql> use information_schema Reading table information for completion of table and column names You can turn off this feature to get a qui…

perl-DBD-MySQL 3.0007-2.el5でハマった件

Perl DBIのプログラムを書いていて、CentOS 5.3付属のDBD::mysqlをそのまま使ったら困ったという話です。 再現ケース 動く例です。 $sth = $dbh->prepare_cached('select ename from emp where empno = ?'); $sth->bind_param(1, 7788, SQL_INTEGER); $sth->…

MySQL Connector/Jにおける大量INSERTのチューニング

ピンポイントチューニング講座です。まずは結果から。 このグラフは、以下のテーブルに50,000レコードINSERTしたときの処理時間を示したものです。性能に70倍以上もの差が出ているのはなぜか、見ていきたいと思います。 CREATE TABLE `loadtest` ( `id` int(…

MySQL用のSCOTTデータベース

Oracleを触ったことのある人は、一度はSCOTTスキーマのEMPテーブル、DEPTテーブルを見たことがあると思います。それぞれ14レコード、4レコードしかないのにSQLの基礎を学ぶための要素がいろいろ詰まっていて、とても便利なスキーマです。 というわけでMySQL…

Oracle OpenWorldで見てきた業務用SSD製品まとめ

SSDがマイブームです。先月自宅のPCにX25-Mを導入したばかりですが、気づいたら2台に増えていました。これはとても危険ですね(財布的に)。 先月のエントリで検証したように、上位のSSDはデータベースに使ってもやはり抜群の性能を見せます。この超高性能をぜ…

Sunを買収したのはOracle

うはー 最近オラクルの営業さんと疎遠になってるなあ、明日メール入れとこう…。 JRockit持ってるのにSun Java VM使うの? Exadataでhpと協業してるのにSunのサーバ使うの? Oracle Database持ってるのに(以下略 /) ///) /,.=゙''"/ / i f ,.r='"-‐'…

MySQL 5.1.34リリース

MySQL 5.1.34がリリースされました。今回は25個の不具合が修正されています。 本日はmysqlクライアント側のバグをご紹介します。Bug#43254です。 mysql> set sql_select_limit = 0; Query OK, 0 rows affected (0.00 sec) mysql> use mysql セグメンテーショ…

MySQL 5.1のmysqldumpslowで快速チューニング

MySQL 5.1のmysqldumpslowを使うとチューニングが楽になる!という話題です。 mysqldumpslowはもともとMySQLに付属しているツールで、スロークエリログを集計してくれるものです。これ自体はMySQL 5.1で特に変わったところはありませんが、スロークエリログ…

MySQLで意図的にエラーログを出す方法

logrotateなどの設定をしていて、動作確認したいなあと思ったときのTIPSです。 $ mysqladmin -u root debugこんなログが出ます。 Status information: Current dir: /var/lib/mysql/ Running threads: 1 Stack size: 196608 Current locks: lock: 0xa735d38:…

MySQL 5.1.33リリース

MySQL Enterprise Serverの5.1.33がリリースされました。Community Serverもほどなくリリースされると思います(2009/04/02追記 リリースされました)。5.1.33には59個のバグフィックスと、3個の仕様変更があります。 今回は10行でサーバを落とすバグのご紹介…

MySQLのベンチマークを用いたIntel X25-M SSDの評価

X25-M、SSDで検索してくる方が非常に多いので、本ブログ内のSSD関連記事をリストしておきます。 MySQLのベンチマークを用いたIntel X25-M SSDの評価 (本記事) SSDの真の性能を引き出す MySQL 5.1.38 InnoDB Plugin (2009/09/07) 先週末IntelのSSD、X25-Mが突…

IBMがSun Microsystemsを買収か

米IBM、サン・マイクロシステムズ買収で交渉 製品ラインかぶりまくりのような。Javaが欲しいのかな?

MySQL 5.1が使えるレンタルサーバ

MySQLの最も多い利用ケースは、レンタルサーバに入っているものをそのまま使うというものだと思います。そこで、国内でMySQL 5.1に対応しているレンタルサーバを調べてみました。ここでは最初からインストール済みのものを対象とします。 さくらインターネッ…

MySQL 5.1.32リリース

MySQL 5.1.32でました。といってもCommunity Serverは本日時点でまだのようで、リリースを確認したのは有償のEnterprise Serverの方です。(2009/03/05追記 Community Serverもリリースされました) MySQL 5.1.32のリリースノートを確認すると、今回は約40個の…

Connector/JのSQLインジェクション脆弱性 つづき

以前のエントリで紹介したMySQLのJDBCドライバConnector/J 5.1.7のSQLインジェクション脆弱性ですが、ようやくパッチができたようです。 public void setString(int parameterIndex, String x) throws SQLException { … for (int i = 0; i < stringLength; +…

tpcc-mysqlによるMySQLのベンチマーク

データベースに対する負荷ツール、ベンチマークツールは世の中にたくさんあるのですが、単一テーブルに対する主キー検索しかしないものなど、CPUクロック勝負の比較的単純なものが多くを占めているようです。そこで本日は、もう少し高度なベンチマーク仕様と…

MySQL 5.1.31リリース、Montyが独立

MySQL 5.1.31出ました。今回はなんと100個以上のバグが修正されています。読むだけでも大変な上に結構痛いバグがたくさんあるようですので、5.1.30を早速使っているチャレンジャーな方はすぐにアップグレードすることをおすすめします。GAでいよいよ大勢の顧…

MySQL InnoDBのネクストキーロック おさらい

MySQLのInnoDBストレージエンジンは行ロックをサポートしています。しかしOracleと同じ感覚でアプリケーションを作っていると、思わぬところでデッドロックに出くわすことがあります。これはInnoDBのロック範囲がOracleよりも微妙に広いためです。 実際の例…

phpMyAdmin 3のパーティショニング機能サポート

phpMyAdminのChangeLogに 3.0.0.0 (2008-09-27) [table] support MySQL 5.1 PARTITION: CREATE TABLE / Table structure, partition maintenance とあったので、確認してみました。確認したバージョンは3.1.1です。 パーティション定義は直接SQLを書かなけれ…

Connector/JのSQLインジェクション脆弱性

PreparedStatement使ってるのにSQLインジェクションが起きるんですけど?という話題。徳丸浩の日記 - JavaとMySQLの組み合わせでUnicodeのU+00A5を用いたSQLインジェクションの可能性より。 再現したのでバグレポート投げておきました。MySQL Bugs: #41730: …

VMwareの時刻あわせ 2008年冬版

VMwareではWindowsホスト上のLinuxゲストの時計が大きくずれるという問題が昔からあって、調べるといろいろ回避策が見つかります。しかし古い情報が多くなってきており、今となってはあまり適切でない方法になってしまっているものもあります。 そこで、2008…

MySQL 5.1はまだベータ版の品質

MySQL創設者の一人、MontyことMichael Wideniusが書いているブログが正直すぎる。 Oops we did it again (MySQL 5.1 released as GA with crashing bugs) あなたがMySQL 5.1をMySQL 5.0の「より良いバージョン」として使おうとしていて、MySQL 5.1の新機能を…

MySQL 5.1 GAリリース

Sakilaに挟まれるWendyの図。MySQL 5.1 GAがリリースされました。 パーティショニング機能がついた InnoDBのデッドロックが減った(はず) InnoDBの多重INSERTが速くなった(はず) 一言でいうと、OracleでEnterprise Edition+Partitioning Option((516万円+12…

Eclipse CDTでmysqldをデバッグする

諸事情により、そろそろMySQLのソースを読み込んでいかないといけない雰囲気です。 これまではamazon:超・極める!MySQLを参考にWindowsのVisual C++ 2005 Express Editionで眺めていたのですが、#ifdef __WIN__ の壁に阻まれてしまいUNIX/Linux依存なところ…