タグ

ブックマーク / sh2.hatenablog.jp (7)

  • Oracle/MySQL/PostgreSQLにおけるサブクエリを含むDMLの非互換性 - SH2の日記

    JPOUG Advent Calendar 2013の23日目です。比較的簡単なDMLでもRDBMS間の非互換性が出てしまうという怖い話をします。 +----+------+ | id | data | +----+------+ | 1 | a | | 2 | b | | 3 | c | +----+------+BEGIN; -- IDが最も小さいレコードをロックする SELECT id, data FROM q WHERE id = (SELECT MIN(id) FROM q) FOR UPDATE; (何らかの処理) -- 処理が終わったので削除する DELETE FROM q WHERE id = (1つ目のSQLで取得したID); COMMIT;IDが最も小さいレコードをロックし、何らかの処理を行って、最後にそのレコードを削除します。IDが最も小さいレコードを取得するというの

    Oracle/MySQL/PostgreSQLにおけるサブクエリを含むDMLの非互換性 - SH2の日記
    lizy
    lizy 2013/12/23
    SERIALIZABLEならFOR UPDATEいらない?と思ったけどSELECT結果がかぶるか。最初にUPDATE+MINでそのトランザクションが処理するレコードを確保するのがいいのかも?
  • Red Hat Enterprise Linux 7 BetaにおけるMariaDB 5.5の構成 - SH2の日記

    MySQL Casual Advent Calendar 2013の14日目です。 2013年12月11日にRed Hat Enterprise Linux 7 Betaがリリースされました。以前から噂されていたとおり、RHEL 7ではMySQLではなくMariaDBが採用されています。日は、RHEL 7 BetaにおいてMariaDBがどのような構成になっているのかを簡単に確認していきたいと思います。 パッケージ構成 MariaDB関連パッケージは13個用意されています。 mariadb-bench.x86_64 : MariaDB benchmark scripts and data mariadb-devel.i686 : Files for development of MariaDB/MySQL applications mariadb-devel.x86_64 : Files

    Red Hat Enterprise Linux 7 BetaにおけるMariaDB 5.5の構成 - SH2の日記
  • mysqldumpの--order-by-primaryオプションについて - SH2の日記

    TIPSです。このようなテーブルがありまして、 CREATE TABLE `link` ( `id1` int(11) NOT NULL DEFAULT '0', `id2` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id1`,`id2`), KEY `ix1` (`id2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;データは以下のような感じで、このときは2,900万レコードありました。 +---------+---------+ | id1 | id2 | +---------+---------+ | 5 | 69 | | 5 | 1022 | | 5 | 1487 | … | 1081 | 2021414 | | 1081 | 2087813 | | 1082 | 11 | | 1082 | 225

    mysqldumpの--order-by-primaryオプションについて - SH2の日記
  • MySQL 5.5.8 GAリリース - SH2の日記

    MySQL 5.5の正式版がリリースされました。 MySQL 5.5 Now Generally Available - Oracle Press Release MySQL 5.5 is GA - Interview with Tomas Ulin What Is New in MySQL 5.5 - MySQL 5.5 Reference Manual Changes in MySQL 5.5.8 - MySQL 5.5 Reference Manual Download MySQL Community Server MySQL 5.1から実に2年ぶりのメジャーバージョンアップです。以前から2010年中のリリースがうたわれていたのですが、無事間に合って良かったです。MySQL 5.5の主な新機能、特長は以下の通りです。 デフォルトのストレージエンジンがInnoDBに変更 性能とスケーラ

    MySQL 5.5.8 GAリリース - SH2の日記
  • MySQL innodb_flush_method = O_DIRECTの検討 - SH2の日記

    MySQL InnoDBのパラメータでinnodb_flush_methodというものがあります。これはUNIX/Linuxにおいてデータファイル、ログファイルの読み書き方式を指定するためのもので、マニュアルの13.6.3. InnoDB Startup Options and System Variablesによると以下の3種類の設定が可能とされています。 無指定(fdatasync):デフォルトの設定です。特別なフラグなしでファイルをオープンし、書き込み時にfsync()を行います。 O_DSYNC:データファイルについてはfdatasyncと同じです。ログファイルについてO_SYNCフラグをつけてファイルをオープンします。 O_DIRECT:データファイルについてO_DIRECTフラグをつけてファイルをオープンします。ログファイルについてはfdatasyncと同じです。 今回はこのパ

  • MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記

    MySQLでテーブルへのカラム追加、インデックス追加やテーブルの再編成などを行うと、その間テーブルに共有ロックがかかってしまいます。そのためこれらのメンテナンス処理は、通常利用者の少ない深夜早朝帯にサービスを止めて実施する必要があります。日はそれを無停止、オンラインのままでできないかという話題です。 基的なアイデア メンテナンス対象の元テーブルをコピーして、作業用の仮テーブルを作ります 仮テーブルに対して、カラム追加などの変更を加えます その間、元テーブルに対して行われる更新処理について差分を記録しておきます 仮テーブルの変更が終わったら、記録しておいた差分データを仮テーブルに反映します 差分データの反映が終わったら、元テーブルと仮テーブルを入れ替えます これと似たようなことを考えた方は結構いらっしゃるのではないでしょうか。ただ、言うは易し、行うは難しです。整合性がきちんと取れるかどう

    MySQLでサービス停止のないALTER TABLEの検討 - SH2の日記
    lizy
    lizy 2010/07/04
    なんか綱渡りぽい
  • データベース負荷テストツールまとめ(1) - SH2の日記

    Webシステム開発において性能試験を行う場合、hp LoadRunnerやApache JMeterといったウェブブラウザをエミュレーションしてくれる負荷テストツールを用いるのが定番だと思います。そんななか、たまにデータベース単体での性能を測ってほしいと頼まれることがあるので、そうした便利なツールはあるのかなと思って調べてみました。 データベースに対する負荷テストツールは探すとたくさん出てくるのですが、案件で使用しているRDBMSに対応していなかったり、トランザクション仕様が希望と異なっていたり、微妙に作りが悪かったりと、ニーズに合致したツールはすぐには見つかりません。そんなときにこのエントリがツール探しの参考になればと思います。 pgbench 対応RDBMS:PostgreSQL 対応OS:Linuxなど 言語:C 作者:石井達夫氏 ライセンス:独自(BSDライセンスに近い) トランザ

    データベース負荷テストツールまとめ(1) - SH2の日記
  • 1