Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

MySQLには、様々なシステム変数が存在します。 これらは、my.cnfなどの設定ファイルやMySQLの起動時オプションで 制御することが可能です。 システム変数は、以下のSQL文で参照できます。 SHOW VARIABLES; SHOW VARIABLES like 'charset%'; また、以下のSQL文で更新できます。 SET GLOBAL sort_buffer_size = 10 * 1024 * 1024; SET SESSION sort_buffer_size = 10 * 1024 * 1024; システム変数には、サーバ共通の値と セッション(接続)共通の値とがあります。 前者を変更すると、その後開かれる全てのセッションに影響があります。 後者を変更すると、現在のセッションでのみ影響があります。 以下、MySQL5.0.16に対応したシステム変数一覧です。 自動イン
+----+----------+------------+---------+ | id | group_id | updated_at | comment | +----+----------+------------+---------+ | 1 | 1 | 2013-12-01 | C | | 2 | 2 | 2013-12-01 | A | | 3 | 1 | 2013-12-02 | B | | 4 | 2 | 2013-11-30 | D | +----+----------+------------+---------+ CREATE TABLE sample_table ( id int(11) NOT NULL, group_id int(11) NOT NULL, updated_at date NOT NULL, comment varchar(60) NOT NU
MySQL5.5からトランザクション処理ができるInnoDBがデフォルトストレージとなりましたし、とりあえずInnoDBにしとこうという風潮から、ストレージがInnoDBであることも多いのですが、実は蓋を開けて見るとまだまだMyISAMで動いているサービスがたくさんあります。今回は運用面から見た両者の違いをみてみたいと思います。 同じMySQLですが、InnoDBの運用とMyISAMの運用は注意するポイントが違います。 ロック方式 一番大きい違いはロック方式の違いでしょうか。InnoDBは行ロック方式(*1)、MyISAMはテーブルロック方式です。データをINSERTやUPDATEする時はセマフォ制御のためロックされますが、その時の挙動が違います。 たとえばUPDATEのクエリを投げると、MyISAMの場合は対象テーブル全体がロックされ、その後のクエリが”詰まり”ます。なので重いクエリを発
{{toc_here}} InnoDB パフォーマンスチューニング MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.11 InnoDB パフォーマンス チューニング ヒント MySQL :: MySQL 5.1 Reference Manual :: 13.6.13.1 InnoDB Performance Tuning Tips 長過ぎる PRIMARY KEY を避けてディスク領域の無駄遣いを避ける セカンダリインデックス用に余計な領域を使わないよう、長い主キーを避ける 主キーが長い場合、代わりに AUTO_INCREMENT なカラムを主キーとして作成するとよい 補足 MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.5.13 InnoDB テーブルとインデックス構造 MySQL :: MySQL 5.1 Reference Ma
MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in
拡張され続ける InnoDB のデータファイルのサイズを小さくする方法 2006-07-07-2: [MySQL] MySQL でトランザクションを可能にするストレージエンジンとして InnoDB があります. InnoDB のデータファイルは,MyISAM テーブルと異なって,デフォルトでは ibdata1 というファイルにデータが蓄積されていくとこになります. MySQL の datadir に自動拡張する 10 MB の ibdata1 ファイルが 1 つと、5 MB の ib_logfile ログファイルが 2 つ作成されます - 7.5.3. InnoDB 起動オプション http://dev.mysql.com/doc/refman/4.1/ja/innodb-start.html この ibdata1 は,大量のデータを追加していくと,自動的にサイズを拡張していきます. ただ
+------+------+-----------+------+---------+-------+----------------------+--------------------------+ | Id | User | Host | db | Command | Time | State | Info | +------+------+-----------+------+---------+-------+----------------------+--------------------------+ | 2 | root | localhost | hoge | Query | 61998 | Repair with keycache | REPAIR TABLE posts | | 1040 | root | localhost | NULL | Query | 0
InnoDB関連でよくある質問のひとつに「テーブルのメンテナンスは何をすればいいんですか?」というものがある。InnoDBはMySQL 5.5でデフォルトストレージエンジンとなるため、InnoDBのテーブルメンテナンス計画を立ようと思う機会も増えることだろう。そこで、今日はInnoDBのテーブルメンテナンスの各種方法となぜそうしなければいけないかという理由を解説しようと思う。 ANALYZE TABLEテーブルメンテナンスの代名詞といえば、インデックス統計情報の更新ではなかろうか。運用を続けるうちに、知らず知らずインデックス統計情報が狂ってしまい、思うような性能が出ない。RDBMSにはそのような問題がつきものであるが、InnoDBの場合、ANALYZE TABLEは不要である。なぜなら、InnoDBが自発的に統計情報を更新するからだ。InnoDBは以下の条件に適合すると、ANALYZE T
認証プロトコルの現在の実装は、古い (4.1 より前) クライアントによって使用されるアルゴリズムと互換性がないパスワードハッシュアルゴリズムを使用しています。古いクライアントを使用して 4.1 以降のサーバーに接続しようとすると、次のメッセージが表示されて失敗することがあります。 shell> mysql Client does not support authentication protocol requested by server; consider upgrading MySQL client この問題に対処する場合、推奨される解決方法はすべてのクライアントプログラムをアップグレードして、4.1.1 以降のクライアントライブラリが使用されるようにすることです。これを行うことができない場合は、次のいずれかの方法を使用します。 4.1 より前のクライアントプログラムを使用してサーバ
とある日が今から何日後? というのをPHPでやるならどうするのがいいんだろう そんな感じで調べていたらPHP による日付・時刻・時間の計算・演算のまとめ – hoge256ブログを見つけました これこれ、って思ったけどよくよく見てみるとちょっと情報が古いような、2007年の記事だし・・・ という訳でちょっと書き直してみました 現在時刻の取得 echo date('Y-m-d H:i:s'); $date = new DateTime(); echo $date->format('Y-m-d H:i:s'); 日付/時刻のパース 日付/時刻を表したある書式の文字列から、年、月、日、時、分、秒を取得します echo date('Y-m-d H:i:s', strtotime('2011-08-12 10:35:20')); $date = new DateTime('2011-08-12 10
MySQLを使い始めて間もない人がよく陥る罠の中に、気づくと使ってるストレージエンジンがMyISAMだった!ということがある。デフォルトのストレージエンジンはMyISAMなので、MySQLに詳しくない人たちが比較的陥りやすい罠なのだ。そもそもストレージエンジンという概念自体がMySQL独自のものなので仕方のない話である。MyISAMは素晴らしいストレージエンジン(たとえばこのYahoo!の中の人による投稿で言われているように)であるが、長所もあれば短所もある。例えば、 トランザクション対応ではない。 クラッシュセーフではない。 更新と参照が入り乱れた場合の同時実行性能がよくない。 テーブルが大きく(数億行とか)なるとINSERTの性能が劣化する。 などなど。特に前者の2つが問題で、アトミックな操作が必要なところでロジックを実装出来なかったり、サーバがクラッシュした時にデータがお亡くなりにな
今回は敬語で書きます。ちょっと弱気です。深い理由はありません。 間違っているところがあったらビシバシご指摘ください。 やっとInnoDBが使えるMyISAMよりInnoDBのほうが優位な点が多くなってからだいぶ経つのですが、ウチでは夜間のバックアップをOSファイルコピーでやっていたため「MyISAM縛り」がありました。 最近になってmysqldumpを利用するよう変更するなどして、やっと縛りを取り払うことができました。 本格的にInnoDBを使い始めようと思ってるところです。 しかし、ただ単純にALTER TABLEしてしまえばよいわけではありません。 MyISAMからInnoDBへの移行についてはnippondanji氏のブログでも触れられていますが、いくつか注意すべき点があります。 漢(オトコ)のコンピュータ道: MyISAMからInnoDBへ切り替えるときの注意点 1年半以上まえのエ
ベイスたん かわいいよ、ベイスたん・・・!ということで、みなさんこんにちは nakamura です。 またまた MySQL のちょいネタですが、今回は mysqldump コマンドのオプションをいくつか整理してみようと思います。mysqldump なんて数え切れないほど使っているはずなのに、まだまだ知らないオプションがあったりするんですね~。知ってるとちょいちょい使える場面あると思いますよ! --opt --opt は mysqldump コマンドのデフォルトオプションであり、--add-drop-table, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, --set-charset をひとつのオプションにまとめたものです。それぞれオプションの解説は以下の通
先日、台風が来てるというのに終電間際の電車で寝過ごし、どしゃ降りの中土地勘のない場所を 1 時間ほど歩いた kimoto です。ネタとして楽しんでいた iOS6 の地図をこんなに恨めしく思う事になるとは…。いまだに脚が痛い。 今回は MySQL で、頻繁に使うことはないものの便利なためちょいちょい使う。そして、その度にググっている…。 そんな機能達をまとめてメモっておこうと思います。 目次はこんな感じ。ではどうぞ。 GROUP で集計したデータの合計値を出力したい! 結果を結合した状態で取得したい! SELECT の結果を INSERT したい! 結果をランダムに取得したい! まずはこんなデータを用意してみました mysql> SELECT * FROM users; +----+-----------+-----+-----+------+ | id | name | sex | age
夏休みまだ取れてないよ~・・・夏終わっちゃうよ~・・・みなさん、こんちには nakamura です。 コンテンツ DB への更新・参照等は日々使うので割りと覚えやすいですが、パフォーマンスチューニング等行う際にテーブルや MySQL 自体のステータスを取得する SQL ってしょっちゅう使うわけではないので結構忘れがちですよね~。今日はその辺りの SQL 文を備忘録も兼ねてまとめてみようと思います。 テーブル関連 テーブルの一覧を取得。 show tables; テーブル構造を取得。 describe table_name; ; describe にはショートカットが用意されています。 desc table_name; CREATE TABLE 文を取得。 show create table table_name; テーブルの状態を取得。 ; 全てのテーブルを表示 show table st
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く