ちょっとキャッチ−なタイトルをつけてしまったが、今日は独断と偏見でMySQLを高速化する方法を10個紹介しよう。MySQLサーバをチューニングするときや初期導入する場合などに参考にしてもらいたい。 1. バッファを増やす、または減らす チューニングの基本中の基本であるが、適切なバッファサイズを設定することはパフォーマンスチューニングの要である。主なバッファは次の通り。 innodb_buffer_pool_size・・・InnoDBだけを利用する場合は空きメモリの7〜8割程度を割り当てる最も重要なバッファである。余談だが、実際にはここで割り当てた値の5〜10%ぐらいを多めにメモリを使うので注意が必要だ。 key_buffer_size・・・MyISAMだけを利用する場合は、空きメモリの3割程度を割り当てるといい。残りはファイルシステムのキャッシュ用に残しておこう。 sort_buffer_

ASCII(str) 文字列 str の左端の文字の数値を返します。 str が空の文字列である場合は、0 を返します。 str が NULL である場合は NULL を返します。 ASCII() は、8 ビット文字の場合に動作します。mysql> SELECT ASCII('2'); -> 50mysql> SELECT ASCII(2); -> 50mysql> SELECT ASCII('dx'); -> 100 ORD() 関数も参照してください。 BIN(N) N のバイナリ値の文字列表現を返します。N は longlong (BIGINT) 数字です。 これは、CONV(N,10,2) と同等です。 N が NULL である場合は NULL を返します。mysql> SELECT BIN(12); -> '1100' BIT_LENGTH(str) 文字列 str の長
HAVING を使用するのではなく LIMIT row_count を使用している場合、MySQL によるクエリの処理方法が異なる場合があります。 LIMIT を使用して数レコードしか選択していないと、フルテーブルスキャンが行われそうな場合に、MySQL はインデックスを使うことがある。 ORDER BY とともに LIMIT row_count を使用している場合、MySQL ではすべてのテーブルがソートされるのではなく、最初の row_count レコードの検索が行われた時点でただちにソートを終了する。 LIMIT row_count を DISTINCT とあわせて使用した場合、MySQL は一意の row_count 行のレコードを検索するとただちに停止する。 GROUP BY がキーを順番に読む(またはキーのソートを実行して読む)ことで解決でき、キーの値が変わるまで サマリが計算
ANY_VALUE(arg) この関数は、MySQL が特定できない理由で有効であるとわかっているクエリーをMySQL が拒否する場合に、ONLY_FULL_GROUP_BYSQL モードが有効な GROUP BY クエリーに役立ちます。 関数の戻り値および型は、その引数の戻り値および型と同じですが、関数の結果は ONLY_FULL_GROUP_BYSQL モードではチェックされません。 たとえば、name がインデックス付けされていないカラムの場合、次のクエリーは ONLY_FULL_GROUP_BY が有効になっていると失敗します:mysql> SELECT name, address, MAX(age) FROM t GROUP BY name;ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP
KOF2008:関西オープンソース2008というイベントに来ています。はてなの伊藤さんの講演があったので、講演メモを公開。 #ボクがメモした内容であって、100%言ったとおりに書いてあるわけじゃないので、参考としてご覧ください。 (続き) アジェンダ 大規模なデータ OSのキャッシュMySQLの運用 大規模データアプリケーションの開発 データの例はてなブックマークのデータ量:五千万件くらいのデータ量 このデータに対して何百万人がアクセスしてくる状況でどういう作りにするか レコード数 1073万エントリー 3134万エントリー 4143万タグ データサイズ エントリー2.5GB 何の工夫もなく普通にアクセスすると...200秒待っても結果が帰ってこない 大規模データの難しいところ 開発サーバで開発者が作っている時は快適に動いていても、多数の人間がアク
The first website, shown in asimulation of the first browser. (Credit: CERN) 30 years ago today, March 12, an engineer at TheEuropean Organization for Nuclear Research (CERN) had an idea that would change the world. In a document entitled “Information Management: A Proposal”, CERN engineer Sir Tim Barnes-Lee laid out his vision for a system of managing and linking information. The system he env

ずぶ濡れ小堤です。 さて、MySQL5のレプリケーション設定を行ったのでメモ。MySQLのバージョンはCentOS5を入れたときに、いれることができるRPM版の5.0.22です。 今回は、マスタ、スレーブの2台構成で、マスターを更新するとスレーブも自動的に更新されるというレプリケーションを行います。 マスターを2つ作って、お互いを更新しあうデュアルマスタや、マスターを複数で構成するマルチマスタの設定などは、そのうちやれればやろうかな。MySQLはインストールされているものとして、設定をはじめます。 手順は下記の通りです。 ユーザの追加 マスタ設定 スレーブ設定 データの移行 マスターのMySQLを再起動して、スレーブを再起動 確認 1.ユーザの追加 マスタに対してレプリケーション用ユーザを作ります。スレーブがこのユーザを使って通信を行います。 GRANT REPLICATION SLA
MySQLのレプリケーション機能では、役割の異なるいくつかのファイルが使用されます。レプリケーションにて使用するファイルのうち、マスタデータベース内で使用するものは、バイナリ・ログファイルです。 バイナリ・ログファイルは、デフォルトでデータベースディレクトリに存在し、マスタデータベースへの更新処理内容のすべてが書き込まれます。バイナリ・ログファイは、レプリケーションのためだけに使用されるのではなく、データベース障害時のリカバリにも使用されます。 また、スレーブデータベース内でレプリケーション用に使用するファイルは、「マスタ・情報ファイル」「リレー・ログファイル」「リレーログ・情報ファイル」の3つです。この3つのファイルは、デフォルトでデータベースディレクトリに存在します。 リレー・ログファイルは、マスタデータベースでの更新処理内容を蓄積する役割を持ちます。スレーブデータベースは、このリレー
日記だけで4億件のデータ ミクシィが運営するSNS「mixi」は、2007年7月末段階でユーザー数が1110万人。人が12人集まれば、1人はmixiユーザーというわけだ。ユーザーのアクティブ率(ログイン間隔が3日以内)は約62%と高く、2007年4月から6月の月間平均ページビューは117.5億に達した。日記だけでも4億件以上に上るなど、蓄積するデータ量も莫大。2004年3月のサービス開始から、わずか3年半で現在の巨大コミュニティーへと発展したのだ。 ミクシィは、「LAMP(OSのLinux、WebサーバのApache、DBMSのMySQL、開発言語のPerl、PHP、Python)」と呼ばれるWebシステム向けの標準的なオープンソースソフトウェア(以下、OSS)でシステムを自社開発し、安価なPCサーバを1000台以上連ねる超分散構成でmixiのサービスを支えている(広告配信など周辺機能では

印刷する メールで送る テキストHTML電子書籍PDF ダウンロード テキスト電子書籍PDF クリップした記事をMyページから読むことができます LAMPやLAPPといった言葉が示しているように、オープンソースソフトウェア(OSS)での代表的なリレーショナルデータベース管理システム(RDBMS)といえば、「MySQL」と「PostgreSQL」だ。この2つのRDBMSは同等であるかのように思われているが、しかしPostgreSQLのユーザー団体「日本PostgreSQLユーザ会」で理事長を務める片岡裕生氏によれば、「PostgreSQLはあまり信用されていない」ということがあるそうだ。 「十分にチューニングされたMySQLとチューニングしていないPostgreSQLを比較したり、反対にチューニングされたPostgreSQLとチューニングしていないMySQLを比較したり、あるいは比

「最新版のPostgreSQLは16CPUまでスケール(CPU数に比例して性能が向上)する。性能はもはやオープンソース・ミドルウエアの課題ではない」---独立行政法人 情報処理推進機構(IPA)は2月7日,オープンソース・ソフトウェア・センター(OSSセンター)が実施した「OSS性能・信頼性評価プロジェクト」の結果を公開した。 スケーラビリティ評価は,TheLinux Foundation(旧OSDL)が開発したツールDBT-1を利用した。オンライン書店をシミュレーションしたベンチマーク・ツールである。使用したのは,評価時の最新版だったPostgreSQL 8.1にパッチを適用したもの。「現在の最新版である8.2相当」(IPA OSSセンター研究員で日立製作所の鈴木友峰氏)。2005年に8.1を対象に実施した評価では8CPUまでしかスケールしなかったが,今回の評価では16CPUまでスケー

UNIX環境にPHPをソースからインストールする手順を説明します。 一般によく組み合わされる、MySQLのインストールについても解説します。MySQLインストールMySQLのインストール Apache2のインストール Apache2のインストールPHPで利用するライブラリのインストール zlibライブラリのインストール libpngライブラリのインストール - GDでPNGフォーマットを扱えるようにする libjpegライブラリのインストール - GDでJPEGフォーマットを扱えるようにする Freetypeライブラリのインストール - GDでTrueTypeFontを使えるようにする GDライブラリのインストール -PHPのグラフィックス機能を使えるようにするPHPのインストールPHP4のインストールPHP5のインストールPHPの動作確認 スポンサードリンク
先日,MySQL 5.0 および 4.1 に関してSQLインジェクションの危険性に対応するためにバージョンアップが行われた。SQLインジェクションとは,入力されたデータにより意図せざるSQL文が実行されてしまうという攻撃である。データベースのデータを書き換えられたり,データが読み出されることにより情報が漏洩したりする恐れがある。セキュリティ・ホールというとWebサーバーやWebアプリケーション言語の専売特許だという印象があるが,データベースにも存在する。十分な注意が必要である。 以下,SQLインジェクションの原理と,MySQLに存在した問題の詳細とその対応について解説する。問題の発見から修正にいたるやりとりはWeb上で公開されており,誰がいつ問題を指摘し修正したのかもたどることができる。mysqli_real_escape_string()関数によるSQLインジェクションの防止 プログ
![[MySQLウォッチ]第27回 MySQL 5.0 および 4.1 にSQLインジェクションのセキュリティ・ホール](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2fbed39b5962a5d552c95b6d796db8f55e72d32943%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Fxtech.nikkei.com%252Fimages%252Fn%252Fxtech%252F2020%252Fogp_nikkeixtech_hexagon.jpg%253F20220512&f=jpg&w=240)
■data uri変換機 これはそそります。なるほどぉ。 data:text/html;charset=utf-8;base64,aHR0cDovL2xhLm1hLmxhL21pc2MvanMvZGF0YS5odG1s ■FirefoxでWindowsのクリップボードに値を設定する方法 上を踏まえて。 http://la.ma.la/misc/js/setclipboard_for_firefox.html http://la.ma.la/misc/js/setclipboard.txt Opera8.5でもいけてる気がします。 外部のサーバを利用せずにHTML単体でいけているのは、dataスキームが有効だからですね。IE7ではまだdataスキームって有効じゃないのでしたっけ? え?オーバーフローするかって?しないでしょ(笑) Firefoxでテキストをクリップボードにコピーする方法::最
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く