database

MySQLのinnodbのインデックスについて調べてみた

innodbの主キー*1はクラスターインデックス クラスターインデックスでは、主キー(B-tree)のリーフページにデータが直接格納されています。 以下の図のようなイメージです。 株式会社スタイルズ 図は引用するとややこしいのでしてませんが、図を見たほうが分…

/etc/init.d/mysql statusを一般ユーザーで使ったらおかしな挙動をした件

$ /etc/init.d/mysqld status mysqld は停止していますがサブシテムがロックされています 確かstatusは一般ユーザーでも見れたよなぁと思ってやったら、なんかこんなエラーメッセージが出ました。全然記憶になかったんで、止まってるのかなと思って再起動と…

MySQLの拡張仕様、GROUP BYでカラム指定を省略してSELECTする場合について

GROUP BY節で、選択したすべてのカラムの名前を列挙する必要はありません。これにより、ごく一部ではありますが、きわめて一般的なクエリのパフォーマンスが向上します。項11.11. 「GROUP BY 句との関数および修飾子の使用」 を参照してください。 MySQL :: …

MySQLでidだけをSELECTして、カンマ区切りにして出力する

SELECT GROUP_CONCAT(id SEPARATOR ', ') FROM examples; +-------------------------------------------------------------------------------------+ | GROUP_CONCAT( id SEPARATOR ', ') | +-----------------------------------------------------------…

実験用にmy.cnfを編集しやすくする。 Serversman@VPSにMySQLをインストールした際の備忘録(2)

$ less /etc/my.cnf #!include /usr/share/mysql/my-medium.cnf !include /usr/share/mysql/my-large.cnf !includedir /etc/mysql.d $ less /etc/mysql.d/encoding.cnf [client] default-character-set = utf8 [mysqld] default-character-set = utf8 !inclu…

Serversman@VPSにMySQLをインストールした際の備忘録

インストールとデフォルト $ sudo yum install mysql-devel mysql-server ==================================================================================================== Package Arch Version Repository Size ================================…

MySQLのLOAD DATA INFILEを稀によく使うので、使い方をメモ

よく使うやつ LOAD DATA INFILE '/tmp/foo.csv' INTO TABLE foo FIELDS TERMINATED BY ',' IGNORE 1 LINES; csvを読み込むにはFIELDS TERMINATED BY ','が必要 LOAD DATA INFILEは、タブ区切りがデフォルトになっているらしい。カンマ区切りであるcsvを読み…

超やっつけのmysqlのデイリーバックアップ

backup-mysql-daily.sh #!/bin/bash mysqldump --opt -c foodb > /home/myuser/backup/`date -I`-dump-foodb.sql rm -f /home/myuser/backup/`date -I --date "7 days ago"`-dump-foodb.sql $ crontab -l 5 3 * * * /home/myuser/backup-mysql-daily.sh $ ls…

PostgresとMySQLでの複合ユニーク制約でのNULLの扱い

ユニーク制約ではNULLは同じ値とみなされないので、複合ユニーク制約で、1個でもNULLになるカラムがあれば、書き込めてしまいます。MySQLでは知ってたんですが、そういえばPostgresだとどうなんだろうと思って、調べてみました。 結論 結論としては、標準化…

MySQLで自分専用のユーザーを作って、必要最小限の権限を与える

CREATE DATABASE mydatabase; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX,DROP,LOCK TABLES ON mydatabase.* TO 'my-user'@'192.168.%.%' IDENTIFIED BY 'password'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX,DROP,LOCK TABLES ON…

MAMPで開発中のCakePHPベースのアプリ。どこかでキャッシュされてる?

MAMP上で開発してるCakePHPベースのアプリで、リロードすると読み込みが早くなる場合がありました。CakePHPのキャッシュの仕組みをちゃんと把握してなかったので、デフォルトで何か動いてるのかとか、もしくはMySQL側の方かとちょっと調べてみました。特に最…

A5:SQL Mk-2でMySQLのテーブルコメントは取得できないらしい

A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール A5:SQL Mk-2は、EXCELと連携して、接続中のデータベースからスキーマを取ってきてテーブル定義書の生成が出来ます。 その際、テーブルコメントやフィールドコメントが、それぞれテーブル/フィールドの論…

MacBookにMongoDBをセットアップしてみた。

オブジェクト指向データベースであるMongoDBを触ってみたかったので、MacBookにセットアップしてみました。 環境 Mac OS X 10.5 32bit(Leopard) MongoDB 1.4.3 バイナリ MongoDB公式が配布している物 インストールというか設置 まずMongoDB公式からダウンロ…

主キーには人工キーを使うか自然キーを使うか

主キーに人工キーを使うか、それとも自然キーを使うか、主キーの扱いがデータモデリングの方針として分かれているみたいです。 結論 現在の特にwebアプリケーションでの主流は、人工キーを使う方針みたいです。 他の言語のことは良く知りませんが、phpで主流…

ER図の表記法ごとにカーディナリティを並べてみた

ER図の表記法として、IE表記とIDEF1Xの2つが良く使われています。 それぞれカーディナリティの表し方が違うし、どちらもあまり直感的じゃない気がします。 分からなくなった時に参照できるように、それぞれのER図でカーディナリティを並べてみました。 なお…

エンティティの依存関係について

どういう場合に依存エンティティにするべきか、逆にどういう場合は独立エンティティかが分からなかったので、追加で調べてみました。 外部キーが主キーになっているなら、それは依存エンティティというのは分かるんですが、理由を知らずに結果だけ覚えても応…

RDBでテーブルの作り方が良くわからなくなってきたので、いったんまとめてみた

カーディナリティや依存関係*1、関係テーブル、正規化など、曖昧な知識のままなので、ちょっとまとめてみます。 経験からなんとなくは分かっているつもりですが、このままだと誰かに説明することもできないし、間違いに気がつかないかもしれない。 一度アウ…

PostgreSQLとMySQLとSQLiteとSQL ServerのJDBCドライバのダウンロードサイト

データベースを扱うツールを色々と試したりしていると、eclipseプラグインも含めてですが意外とJava製のものが多かったりします。 そうするとJDBCドライバが必要になり、毎回ダウンロードサイトを探すのに手間取るので、ちょっとまとめてみました。 PostgreS…