前回「第2回:負荷によるベンチマークを試す」の測定結果では、測定途中でmax_connectionsに達してしまい、計画していた測定を完了することができませんでした。そこでmax_connectionsを増やして、再度測定してみましょう。 max_connectionsを増やすには2通りの手段があります。まず「/etc/my.cnf」に設定を追記する方法です。設定値は450に変更します。
https://github.com/rackerhacker/MySQLTuner-perl MySQLTunerはMySQLのチューニングを診断してくれるアプリケーションです。 基本的なパフォーマンスチューニングのヒントをわかりやすく表示してくれます。 MySQLのチューニング設定に不安な方や、はじめてMySQLをさわる方は試してみると良いでしょう。 ライセンスはGNU GPLで無料で使えます。 検証環境 CentOS 6.3(64bit) MySQL 5.5.28 MySQL 5.5をインストール MySQL 5.5をインストールします。 # wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm # wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86
今回は、MySQLの高速化のメモ - @luke_silvia.diaryの方法に従ってクエリの高速化をした際に、MySQLのインデックスについて分かったことを書いておきます。 高速化対象のクエリ 今回高速化したいクエリは、以下のようなもの。 SELECT users.*, students.school, workers.school FROM users LEFT JOIN students ON users.id = students.user_id LEFT JOIN workers ON users.id = workers.user_id WHERE (users.status= 1 AND ((kind = 0 AND students.school = 'test') OR (kind = 1 AND workers.school = 'test'))) ORDER BY
前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld のプロセスが利用できるメモリの上限が、32bit OS の場合は3G 程度ということは、innodb_buffer_pool_size もこの制限を受け、これについての警告が、先に紹介したリファレンスマニュアルのものという理解だけどいいのだろうかというのが1つ。 2 つ目は、この理解があっているとすると、4G 以上のクラスのメモリをつんだサーバをDB サーバとして利用する場合、64 bit OS でないとリソースの有効活用ができないか。それとも、先に書いたとおり、OS レベルのキャッシュとして利用できるから、結果としてデータファイルを読み込む
StackOverflowでナイスな回答を見つけた。 以下、自分用メモとして要点をピックアップ。 http://dba.stackexchange.com/questions/27328/how-large-should-be-mysql-innodb-buffer-pool-size InnoDBの最適なバッファプールサイズを予想するには、まずこのSQLを実行する。 SELECT Ceiling(total_innodb_bytes * 1.6 / Power(1024, 3)) RIBPS FROM (SELECT Sum(data_length + index_length) Total_InnoDB_Bytes FROM information_schema.tables WHERE engine = 'InnoDB') A; これは、現時点でInnoDBが使っているメモリの総量を
MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in
31. レプリケーションスレーブに注意 (FIXED by 5.7.9) REPLICATION SLAVE権限の *他に* SELECT ON performance̲schema.* が必要 mysql> show slave statusG *************************** 1. row *************************** .. Last_IO_Errno: 1142 Last_IO_Error: The slave I/O thread stops becaus e a fatal error is encountered when it try to get the value of SE RVER_ID variable from master. Error: SELECT command denied to use r 'replic
プライベートで作ったWebアプリで、一画面だけブラウザに表示されるまで3秒かかる激重画面があります。 この画面ではCakePHPが自動的にいろんなテーブルをjoinしたSQLを生成しているので、その辺りが原因だろうとは感づきました。 それにしても、たかだか20行程度のselectなので、なんか変だ。。。 ちょっとだけ分析と改善をしました。(はじめてのパフォーマンスチューニング…ドキドキ) 結論としては、1000倍早くなりました。 CakePHPのクエリ自動生成は楽ですが、パフォーマンス上の問題が発生した時にはやはりSQLを知らないとダメだなぁ… 環境 VirtualBoxのVM(メモリ613MB)上に下記の環境があります。 CentOS 6.5 x64 nginx 1.0.15 PHP 5.5.13 MySQL 5.5.37 CakePHP 2.4.0 テーブル構造 テーブル 内容 外
$ mysqld --help --verbose --skip-networking --defaults-file=<path to my.cnf> --pid-file=$(tempfile) 1>/dev/null MySQLのhelpコマンドはヘルプ情報をコマンドライン上に表示しすぐに終了するが、configファイルは読みにいくようでそれを利用し文法のチェックを行う。 また同じシステム上で既にMySQLが起動している場合、干渉することを避ける為 –skip-networking と –pid-file オプションを指定。 注意点 この方法は文法エラーを見つけるだけで値のチェックは行わないので注意する。 ほぼ参考にした記事を翻訳しただけですね。はい 参考 How to check MySQL configuration file syntax? How to syntax-chec
PDOではなく、各DB固有の関数だと、「SELECT結果の件数」を返す関数として、 MySQLなら、mysql_num_rows() MySQL拡張(MySQLi)なら、mysqli_stmt::num_rows()メソッドまたはmysqli_stmt_num_rows()関数 PostgreSQLなら、pg_num_rows()関数 があるんですが、PDOの場合、それっぽいメソッドが rowCount()くらいしかないのですが。PHPマニュアルによると。 PDOStatement::rowCount() は 相当する PDOStatement オブジェクトによって実行された 直近の DELETE, INSERT, UPDATE 文によって作用した行数を返します。 関連する PDOStatement によって実行された直近の SQL ステートメントが SELECT 文の場合、いくつかのデー
MySQLにはFOSS License Exceptionという制度がある。そのような制度があることはあまり知られていないし、名前を知っていても内容はよく知らない、または誤解しているという人が結構居る。そこで、FOSS License Exceptionについて改めてここで紹介したい。 MySQL FOSS License Exception http://www.mysql.com/about/legal/licensing/foss-exception/ 知っての通り、MySQLはデュアルライセンスだ。無料で公開されているMySQL Community ServerはGPLv2でライセンスされており、その他に有料のコマーシャル・ライセンス版が存在する。コマーシャル・ライセンス版はソースコードを公開したくないユーザー向けのライセンスで、俗にOEM版とも呼ばれる。 さて、FOSS Lice
(↓間違いの訂正アリ↓)第4回大阪MySQL勉強会資料 06/03 修正 ◆@y_catch さん @yoku0825 さんに教えていただいた誤謬の修正 ・「使用権」は誤解を招くと教えていただいたので "「使用」と「利用」""ライセンスの2つの法的根拠"などを修正 また、使用が権利でないことの理解の一助となるよう "「使用」と「利用」とライセンス"のページを追加 ・GPLのバージョンについての情報を追加して、用語はGPLv2へ統一(したつもり) ・"MySQLの著作権"について、教えていただいた情報を元に修正 ◆また、以下も修正 ・発表直前に書き上げたため、推敲せず話の繋ぎがうまくいってない箇所や 分かりにくい説明、見にくいところなどを修正 ・[GNUによる4つの自由]で自由の保障で勘違いしてたところを削除 ・オープンソースライセンスの定義を正しいものに修正 ・時間がなくて機械翻訳のままだ
全文検索エンジンとしてmroongaを使おうとインストールしてたら盛大にはまったのでシェア mroongaとはgroongaの特徴環境環境は下記の通り MySQLインストールremiリポジトリからインストールしています。 ここまでは普通 groongaインストールマニュアルにあるとおりにインストール 2.5. CentOS groonga v2.1.1ドキュメント ここまでは順調 mroongaのインストールMySQL 5.5系を使うので、mroongaはソースからインストール まずはマニュアル通りに ビルド自体がこけて、ここで一つ目のエラー で、MySQLのinclude/probes_mysql.hをみてみると、 ってあるので DISABLE_DTRACEを指定して再度ビルド で今度はビルドはできたが、プラグインをMySQLにインストールする時にコケた。。。 このことtwitterで呟
もう寒の入りを過ぎましたね。DBAのたなかです。 GAからもうすぐ1年、社内ではもう相当カジュアルにMySQL 5.6をインストールしています。今までは新規サービス(や、新規機能)での導入がほとんどだった5.6を、このたびトラフィックガンガンのサービスにアップグレードで導入しました(と、偉そうに言っていますが私でない別のDBA氏が主担当のサービスです) 主な理由はInnoDB Compressedを使っていたのでその性能アップに期待…というところだったんですが、弊社DBAが神代の時代より試行錯誤を重ねたどり着いた究極のmy.cnf(?)、いわゆる秘伝のタレが 残 念 な が ら 腐 っ て お り 夜を徹してアップグレード作業をしていた担当DBA氏が青い顔(推定。チャットだった)で ス ロ ー ク エ リ ー が 1 0 倍 く ら い に な っ た ん だ け ど … と訴え、彼はその
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く