それほどDBに詳しくないアプリエンジニアが何かトラブった時にすぐさま行動して問題把握できるようになる情報を列挙しておきます。 開発時、障害時の対処療法やちょっとした定期監視方法などを対象にしています。 抜本的な対策などはインフラエンジニアさんにお任せしたほうがいいと思います。 DBはいろんな意味でこわいんでできれば触りたくないです>< 事前確認 MySQLサーバーのシステム設定値を確認しておく 以下のようにサーバーのシステム設定値を確認できます。 mysql> SHOW GLOBAL VARIABLES; # ワイルドカード(%)を用いた絞り込み mysql> SHOW GLOBAL VARIABLES LIKE 'performance_schema%'
i was using order by rand() to generate random rows from database without any issue but i reaalised that as the database size increase this rand() causes heavy load on server so i was looking for an alternative and i tried by generating one random number using php rand() function and put that as id in mysql query and it was very very fast since mysql was knowing the row id but the issue is in my t
kamipoさんが補足を書いてくれたので、参照するとよいです。 基礎的だけど、SELECT ... FOR UPDATEをちゃんと理解できてない気がするな、ということで実際にコンソールで打ちながら挙動を確認してみた。 今回確認した環境は、 mysql> show variables like 'tx_isolation'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | tx_isolation | REPEATABLE-READ | +---------------+-----------------+ 1 row in set (0.00 sec) mysql> show variables like 'version'; +-----
MySQL5.6からrowベースのレプリケーションを使用している場合でもステートメント(クエリ)をコメントとしてバイナリログに記録するオプション(binlog_rows_query_log_events)が追加されています。 このオプションを利用することでrowベースでレプリケーションされたクエリが確認し易くなります。 マニュアル binlog_rows_query_log_events 動作確認環境 CentOS 6.3 x86_64(KVMゲスト) MySQL 5.6.10 binlog_rows_query_log_eventsが無効な場合 mysqlbinlogコマンドに-vオプションを使う事である程度は把握が可能でした。以下例はbinlog_rows_query_log_eventsが無効な場合の表示例です。 テーブル定義と設定 mysql> show create table
2009年07月06日22:54 MySQL LAST_INSERT_IDを使って採番テーブルを扱う 採番テーブルというのは、例えば同じ DB の違うテーブル(data_1テーブルとdata_2テーブルとか)で id を重複させたくない(つまり、data_1テーブル、data_2テーブルでは auto_increment は付けない)場合などに、ユニークな id を生成するためのテーブルです。こんな感じ。 CREATE TABLE num ( id bigint(20) unsigned NOT NULL DEFAULT '0' ) ENGINE=InnoDB; +-------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---
INSERT 〜〜 ON DUPLICATE も LAST_INSERT_ID() も便利な関数なので、よく使わせてもらっています。 しかしこれらの関数を同時に利用した場合に、MySQL 5.1.12 より前のバージョンの場合に少し困る事があります。 autoincrementを利用していた場合に、LAST_INESRT_ID()の返す値が意図した値ではない場合があります。 検証 例えば下記のようなテーブル構造の場合を考えてみましょう。 CREATE TABLE `insert_test` ( `id` int(11) unsigned NOT NULL auto_increment, `test_id` int(11) NOT NULL, `test_name` varchar(10) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY
MySQL5.1しか確認して無いですが、 UPDATE文にもLIMIT句があるんすね http://kjirou.sakura.ne.jp/mt/2008/05/mysql_update.html これは知らなかった。 データを直接いじっているときなどにとりあえずLIMIT 1なんてつけておくと、うっかり全件更新してしまうのを防げていいかも。 だがしかしWHERE句を付け忘れる時にはLIMITも付け忘れる罠。 そして、マニュアルを読んでみたらLIMITのほかにもORDER BYが使えるとのこと。 UPDATE users SET lucky_flg = 1 ORDER BY RAND() LIMIT 100 抽選で100名様にフラグがついた! 13:50 追記 [ThinkIT] 第2回:拡張部分によって違いがでてくるSQL文 (3/3) UPDATEの他にDELETEでも出来る模様。 上
hogeテーブルをhoge_20081123というテーブルにコピーする方法。 /* hogeテーブルのスキーマをコピーしてテーブル作成 */ > CREATE TABLE hoge_20081123 LIKE hoge; /* hogeテーブルのデータをINSERT */ > INSERT INTO hoge_20081123 SELECT * FROM hoge; たまにしかやらないのですが、いっつも忘れているのでメモ。 実践ハイパフォーマンスMySQL 第3版 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自(監訳),株式会社クイープ 出版社/メーカー: オライリージャパン 発売日: 2013/11/25 メディア: 大型本 この商品を含むブログ (6件) を見る
BENCHMARK(count,expr) BENCHMARK() 関数は、式 expr を count の回数だけ繰り返し実行します。 MySQL による式の処理速度を計測する際に使用される場合もあります。 NULL や負の繰返し回数などの不適切な引数の場合、結果値は 0 または NULL です。 この使用目的は、mysql クライアント内から、クエリーの実行時間をレポートすることです。 mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')); +---------------------------------------------------+ | BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')) | +-----------------------------
All of Percona’s open-source software products, in one place, to download as much or as little as you need.
Raycastを使い始めて1年経ったので、どういうことに使っているかを振り返ってみる。去年書いた AlfredからRaycastに移行した - oinume journal の記事から少し使い方が変わっているところもあるのでメモがてら。 基本的な使い方 Cmd + QをRaycast起動のショートカットとして割り当てている。Pro版は使っていないのでAI機能などは使ったことがない。 ブラウザのブックマーク検索など、よく使うけどHotKeyを割り当てるほどでもないRaycastコマンドはbmのようにAliasを設定している。 Cmd + QでRaycastを起動してbmと入力するとブックマークの検索ができるので楽ちん アプリケーションランチャー機能 アプリケーションを起動するときのランチャーとして使っている。よく使うアプリにはHot Key(ショートカット)を割り当ててる。 Clipboar
はじめまして。プラットフォーム開発本部のせじまです。好きなものはDisk I/Oです。 今回はMySQL(on Linux)のレプリケーションにまつわる、ちょっとしたお話をさせていただきたいと思います。 はじめに MySQL4.0以降のレプリケーションは、 Masterのmysqldが、INSERT/UPDATE/DELETEなどの更新情報を、バイナリログに記録する。 Slaveのmysqld(IOスレッド)は、masterのmysqldに接続し、バイナリログを転送する。 Slaveのmysqld(IOスレッド)は、受信したバイナリログ内容を、リレーログに記録する。 Slaveのmysqld(SQLスレッド)は、リレーログを読み込み、更新内容をslaveのDBに反映する。 といった仕組みになっています。図にすると次の通りです(*1)。 MySQLのレプリケーションはとても良くできた仕組みな
“MySQL Casual Advent Calendar 2011” 7 日目を担当させていただく、hatak (@hisashi) です。 普段はモバイルゲームのインフラをメインにみているのですが、今回はそんな業務で経験したことを基に記事を書かせていただきます。 カジュアルすぎる内容かもしれませんが、お付き合いいただければと思います。 MySQL のレプリケーション MySQL のレプリケーションは、安定稼働やバックアップ、負荷分散などの目的に利用できる優れた機能です。 bin-log (バイナリログ) を利用して Master サーバから Slave サーバに更新を伝播させ、データの複製を行います。Slave サーバでは、2 つのスレッドが動作しています。 IO_THREAD – Master から送られてきたデータを受け取り、relay-log (リレーログ) として書き出す SQ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く