カジュアル!(挨拶) このエントリは MySQL Casual Advent Calendar 2011 の18日目の記事です。 昔、専ら PostgreSQL を使っていた頃、MySQL のクエリキャッシュって簡単に性能上がるしみたいだし羨ましいなあ、と思っていました。そのため、1年ほど前から業務で MySQL を使うようになっても、クエリキャッシュは当然のごとく有効にしておりました。 ところが先日 DSAS開発者の部屋:クエリキャッシュは切ったほうがいいんじゃなイカ? というエントリを読みまして、クエリキャッシュはグローバルロックを獲得するとのこと。これはちょっと検証してみなければなるまい、ということでベンチマークをしてみました。 ベンチマーク結果 結果は別ページにまとめました benchmark script と my.cnf ざっくりと説明しますと、 平均 260 byte/行、1
レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基本的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということを本エントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ
http://mysql-casual.org/2011/11/mysql-casual-advent-calendar-2011.html の6日目の記事として書かせていただきます、sugyanです。 勢いで参加表明してしまい、今日慌てて久しぶりにMySQLを触りました。 MySQLでFizzBuzz ストアドプロシージャって使ったこと無かったので初めて触ってみました。 DROP PROCEDURE IF EXISTS FizzBuzz; delimiter // CREATE PROCEDURE FizzBuzz(n INT) BEGIN DECLARE i INT DEFAULT 1; WHILE i <= n DO SELECT CASE WHEN i % 3 = 0 AND i % 5 = 0 THEN 'FizzBuzz' WHEN i % 5 = 0 THEN 'Buzz'
KLab Advent Calendar 2011 「DSAS for Social を支える技術」の2日目は、昨日に引き続き、MySQLを骨までしゃぶるためのテクニックです。 ソーシャルゲームは一般サイトよりもDBへの更新クエリの割合が多くなりがちです。更新クエリが多いMySQLでは、通常は有益なクエリキャッシュが無益どころか有害になります。 そもそもキャッシュヒット率が低い。20%以下なんてこともザラにある しかもクエリキャッシュの更新はグローバルなロックを取得する からです。特に後者は問題です。ただの参照クエリもクエリキャッシュを更新する上に、更新クエリはクエリキャッシュの全エントリをチェックして、更新したテーブルに影響がありそうな全キャッシュをdiscardしていくためです。たとえばユーザーの行動力のようなパラメータを格納した参照も更新も多いテーブルでクエリキャッシュが有効になって
以前に書いた、MySQL Clsuterを使ったシステム本運用開始直後のログから2年近くが経過しました。ちょうどいい機会なので、その後の運用を踏まえての感想と、今後の展開について記録を残します。現時点で秘密でない事項についてのみ書きます。 1.SunからOracleへ 知っての通り、MySQLはSunを経てOracleの所有物になりました。 気がついてみるとOSSの主要なデータベース技術のうち、Berkeley DB、InnoDB、MySQLがOracleになってしまいました。 (よかったこと) GPLのデュアルライセンスは今のところ守られています。そのためMySQLにお金を払ってくれるユーザは、今まで通り限られたままで財政的には厳しいはずなんですが、今のところOracleはMySQLに対してコミットを守っているようです。特に変わったところとして、「リリースのスケジュールが守られるようにな
Groongaについて Groongaはオープンソースのカラムストア機能付き全文検索エンジンです。Groongaを使うと全文検索機能付き高性能アプリケーションを開発することができます。 特徴 最新リリース 2024-07-29にリリースされた14.0.6が最新リリースです。 インストール ソース 最新記事 Groonga 14.0.6リリース (2024-07-29) PostgreSQL用高速日本語全文検索モジュールPGroonga(ぴーじーるんが) 3.2.1リリース (2024-07-04) Groonga 14.0.5リリース (2024-07-04) Groonga 14.0.4リリース (2024-05-29) Groonga 14.0.3リリース (2024-05-09) Groonga 14.0.2リリース (2024-03-29) Groonga 14.0.1リリース (
世間では、今Gumblar祭りが勃発中であり、SQLインジェクションがニュースに出てくることは少なくなったが、だからと言ってSQLインジェクションの脅威がなくなったわけではない。SQLインジェクションはGumblarを仕掛ける手段としても利用されることがあり、Webアプリケーションを提供する全ての人にとって、対策を講じなければいけない驚異であることに変わりはない。SQLインジェクションという攻撃手法が認識され、大いに悪用されているにも係わらず、その本質に迫って解説している記事は少ないように思う。従来のWeb屋だけでなく、今やアプリケーション開発の主戦場はWebであると言っても過言ではなく、そういう意味ではSQLインジェクションについて理解することは、全てのプログラマにとっての嗜みであると言えるだろう。 というわけで、今日は改めてSQLインジェクションについて語ってみようと思う。 SQLイン
Posted on 10月 20, 2011 Filed Under emoji, perl | iOS5から絵文字キーボードで入力した絵文字がUnicode6になったということで、 絵文字キーボードで絵文字を入力するとどんなコードになるのか、ダンプしてみました。 この記事の最後にのっけておきます。 さて * MySQL5.5以上じゃないと4バイトのutf8は保存できない * iPhoneで入力した絵文字をガラケーで表示したい という時に、どうするのがよいのでしょう? MySQL5.5でないMySQLに何を保存するか、というところで考えるとよいのだろうか 案1) DBには Encode::JP::Emoji の x-utf8-e4u-mixed を保存する場合 全部の入力 -> decode(’x-utf8-e4u-mixed’, $input) -> mysql(mysq
ふたたびSpiderの話題です。 WEBアプリを世界展開する場合、要件の1つとして、世界各国のユーザーは全てのデータを参照する必要があるが、データの登録は各国、地域の担当者が各自のデータを登録したい、というケースが多いと思います。 たとえば、商品のサイトで、EUと日本にそれぞれ管理者がいるとします。 その場合のユースケースとしては、 EUの管理者はEUの商品を登録する 日本の管理者は日本の商品を登録する ユーザーは全ての商品を閲覧できる となります。 このとき、DBがどのリージョンにあるかによって、ユーザーや管理者の間で、レスポンススポードに差がでます。 DBを日本に置くとEUのユーザーや管理者には遅いシステムとなってしまい、EUに置くとその逆になります。 そのため、各リージョンに全てのリージョンで登録した商品データを用意し、ユーザーのロケーションに関わらず、DBアクセスをユーザーと同じリ
最新の開発版であるMySQL 5.6.3-m6がリリースされた。清く正しいMySQLerの皆さんはすでにダウンロードして、評価を楽しんでくれていることだろう。はっきり言ってこのバージョンは凄い。明らかに前バージョンのMySQL 5.6.2から搭載されている新機能の数は膨大である。それはMySQL 5.6.3のリリースノートを見てもらえば一目瞭然だ。凄いボリュームだからだ。 今回はそんな膨大な新機能を搭載したMySQL 5.6.3について、要点を解説しようと思う。MySQL 5.6.3は開発版なので今直ぐ本番環境へ投入したい!というはやる気持ちはグッと我慢して頂きたいが、ぜひ評価はしていただきたいと思う。 パラレルSQLスレッドMySQLのレプリケーションでは、大量のクエリを実行すると何かとスレーブが遅れがちであった。スレーブでは単一のSQLスレッドだけがクエリを実行するからである。その問題
I'm excited to see the new features in MySQL 5.6.3. Replication enhancements such as parallel SQL threads, crash safe slave and binlog checksum have been desired for years. I really appreciate that MySQL development team has released 5.6.3 in timely manner. In this blog entry, I'd like to pick up one of my most favorite performance enhancements in MySQL 5.6.3: "network performance improvements". T
ここのところ、お仕事で管理しているシステムで、夜中に負荷が急上昇する事象が発生しており、夜な夜な対応に追われていました。 (このブログ書いている今も、負荷がじわじわ上昇中なんですが・・・) で、いろいろと調査した結果、ようやく糸口がわかってきました。 結論から言うと、ローカルポートなどのネットワーク資源を食いつぶしていたようです。 以下、調べていってわかったことなどのメモです。 トラブルの事象 運用しているのは Apache2.2 + mod_perl2 なwebサーバで、リスティング広告システムの配信系です。 リスティング広告の配信のシステムって一般的にロジックが複雑でいやーな感じなんですが、このシステムもご他聞に漏れずかなりのひねくれ者で、しかもトラヒックは結構多めです。システム全体で、日に1000万〜2000万クエリくらいかな。幸か不幸か、このご時勢においてもトラヒック的には成長し続
rootなのにgrantコマンドが実行できない…。 mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' with grant option; ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES) そんな時の対処法。 これだけなのにかなり悩んだのでメモ。 grant option権限復活 grant有効 とりあえずrootのみにしとく。 mysql> update mysql.user set Grant_priv='Y' where user='root'; 設定反映 mysql> FLUSH PRIVILEGES; 権限確認 rootのGrant_privがYになってるか確認。 mysql> select user,Grant_priv from m
本番環境のトラブルシューティングで、サーバルームに缶詰になって作業することがあります。インターネットには繋がらない、ノートパソコンは持ち込み禁止、場合によっては携帯電話も持ち込み禁止、突然呼ばれたのであの本やこの本も持ってきていないという状況で、MySQLのコマンドをど忘れしたらどうすればよいでしょうか。 実はMySQLには公式サイトに掲載されているものと同じマニュアルが付属しており、infoコマンドで閲覧することができます。 $ info mysql Red Hat Enterprise Linux/CentOSのバンドル版ではmysqlパッケージ、公式バイナリではMySQL-serverパッケージにマニュアルが入っています。Info形式のマニュアルは、GNUのソフトウェアで標準的に使われているものだそうです。 操作方法をメモしておきます。 キー 内容 Enter リンクをたどる Spa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く