ぶろぐ

日記です

MySQL

index_mergeが起きる時と起きない時

あれ?MySQLは「1クエリに1インデックスしか使えない」んじゃなかったっけ?と思ったけど、5系からはインデックス結合最適化ってゆーのが行われるらしい。 http://dev.mysql.com/doc/refman/5.1/ja/index-merge-optimization.html ただ問題なのが あるキーで…

カラム名を検索、メタな意味で

カラム名を元にどのテーブルで使われているかなぁ〜ってのを探す。 use information_schema desc columns; select TABLE_NAME from columns where COLUMN_NAME = 'sitteru_column'; +-------------------+ | TABLE_NAME | +-------------------+ | sorewo_tu…

MySQLメモ

MySQLの話してる。 1クエリ1インデックスしか使われない 複合インデックス、普通のインデックスを兼ねることもある。 idx(a,b)はidx(a)を兼ねる。 わからないこと idx(a,b) は idx(a)を兼ねることは分かったけど、3つのカラムにまたがった場合はどうなる?id…

in句に型が混合しているとインデックスが効かない

という話を聞いたので、一応検証しておいた。 mysql> explain select * from page where page_id in (1,2,3,4); +----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | type…

updateやdeleteでwhere指定なしだと実行できないとき

こんなエラーが出るとき。safe-updatesが有効になってる。 ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnこのコマンド入れて、一時的に無効にする。 SET SQL_SAFE_UPDATES=0…

MySQLで作成・更新日時を自動で更新するカラム作りたい時

以下のサイトを参考にしてます。 いぞるで雑記annex mysqlのtimestamp型を使って更新日時と生成日時の両方を記録する http://isoldeblog.blog93.fc2.com/blog-entry-14.html

timestampの整形

MySQL側でやらせちゃう場合は、以下でいける。 select DATE_FORMAT(created, '%Y年%m月%d日') as created -- 時間まで入れるとき -- DATE_FORMAT(created, '%Y年%m月%d日 %H時%i分%s秒') from hoge;

mysql5.5文字コード設定

/etc/my.cnfを変更 [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 # 5.1の場合 # default-character-set=utf8 文字コード確認コマンド 全体の文字コード確認 show variables like 'character_set%'; データベースの文字コード確認…

MySQLをコマンドラインで操作

研修ってことで、いつも使っているphpMyAdminを使わずにMySQLで データベースの作成 テーブルの作成 select,insert,update,delete処理 テーブル削除 データベース削除 と、データベースの一生を追ってみた。 データベースの作成 mysql> create database test…

MySQLでDBをお引っ越しする方法(サービスを止めていい場合)

mysqldumpで一度ダンプし、mysqlに読み込ます方法で今までお引っ越ししていました。しかし、普通に生のDBファイルをコピーする方法もありました。 方法 mysql/data/データベース名 フォルダごと引っ越し先にコピーします 引っ越し元はサービスを止めておく必…

RDBの負荷対策について聞いてみた

某iDCのNOCで働いている友人に聞いてみた 勝手に要約しているので、オレフィルターで話がずれているかも(笑) 会話 オレ「MySQLのマスター/スレーブ方法のレプリケーションって、負荷対策の目的ではなくて、可用性高める目的で使うのが普通みたいだな…。参照…

MySQLの負荷対策について調べてみた

まだ、調べている途中なんだけど、出てきた用語をメモる. 一覧 参照系 更新系 パーティショニング 水平パーティショニング 垂直パーティショニング レプリケーション memcached tokyo tyrant 内容 参照系 select文など、DBを見るだけ.DBの人は「参照系」と…

selectを爆速にするために、indexを設ける

件数が多くなると、データの取り出しが非常に遅くなる. テーブルにインデックスを付けることで、データの検索を爆速にする. 弱点として、データの更新はインデックスを更新する必要があるので遅くなる. やり方と速度検証は、後ほど…。 メモメモ indexを設…

バックアップとリストアの方法を三つ

方法は三つある mysqldumpを利用する方法 sqlでダンプしてファイルに落とし、読み込ます方法 よく使う、デフォはこれでいいかなー? MySQLデータベースディレクトリごとコピーする方法 mysqlディレクトリのdataフォルダをそのままコピーする方法 リストアす…

MySQLでレコードを追加したとき、作成日を付ける方法

トリガーってやつですね やりたいこと MySQLで、レコードを追加するとき、フィールドに作成日を保存する. phpmyadminで作成する場合は 種別をTIMESTAMPにする デフォルト値をCURRENT_TIMESTAMPにする サンプルSQL文 CREATE TABLE `hogeTable`.`hogehoge` ( …