Posts tagged MySQL
MySQLクイックチューニング
1月 19th
mysqltuner実行画面
mysqlのパラメータチューニングをある程度おおざっぱに行うスクリプトを発見。 一言で言えば、10分である程度チューニングできる! http://blog.mysqltuner.com/
使い方は至って簡単、ダウンロードして実行するだけ。 実行すると、MySQLへのログインIDとパスワードが聞かれる。入力すると、MySQLのステータスや変数、物理メモリ容量をチェックされ、その環境に合ったパラメータを提案してくれる。
% wget http://mysqltuner.com/mysqltuner.pl % perl mysqltuner.pl
適当に運用している環境ではすごい楽。デフォルトのmy.cnfでは物足りないけど、パラメータチューニングをExcelを使って統計情報を元にチューニングするのは面倒という人向け。 24時間以上運用していないと統計値が収束しないので、ある程度運用してから実行した方がいいです。
innodb_log_file_sizeを変更する方法
12月 1st
innodb_log_file_sizeの変更手順。
mysql> SET GLOBAL innodb_fast_shutdown=0; # /etc/init.d/mysql.server stop # mv ib_logfile* /tmp/ # /etc/init.d/mysql.server start
MySQL InnoDB, Linux and SSD tuning
11月 20th
松信 嘉範さんによるhbstudy#5発表資料「Linux/MySQLサーバーのパフォーマンスチューニング」 これを読んで、追加で行ったチューニングや新しいことメモ。さすが中の人だけあって詳しい。
1:1InnoDBで。 TEXTなどのデータを別テーブルへ。 よく検索される列ごとにテーブルをまとめるとbuffer poolを効率よく使える。
物理メモリが足りなくなったときの挙動ファイルシステムキャッシュを減らす。(100の場合、プロセスをスワップアウト) # echo 0 > /proc/sys/vm/swappiness
永続化 # echo ‘vm.swappiness=0′ >> /etc/sysctl.conf
mtstatvmstatの高機能版かな。数値がhuman friendlyで、カラーリングされている。 (トップ画)
SQLで先月という表現
11月 16th
SQLで先月という制約を書く方法。
col BETWEEEN date_format(adddate(now(), interval -1 month),'%y-%m-01') AND last_day(adddate(now(), interval -1 month));
以下、MySQLでの実験。現在は2009年11月16日。
mysql> select '2009-10-16' between DATE_FORMAT(adddate(now(), interval -1 month),'%Y-%m-01') and last_day(adddate(now(), interval -1 month)) as result; +--------+ | result | +--------+ | 1 | +--------+ 1 row in set (0.00 sec) mysql> select '2009-10-31' between DATE_FORMAT(adddate(now(), interval -1 month),'%Y-%m-01') and last_day(adddate(now(), interval -1 month)) as result; +--------+ | result | +--------+ | 1 | +--------+ 1 row in set (0.00 sec) mysql> select '2009-10-01' between DATE_FORMAT(adddate(now(), interval -1 month),'%Y-%m-01') and last_day(adddate(now(), interval -1 month)) as result; +--------+ | result | +--------+ | 1 | +--------+ 1 row in set (0.00 More >
PHP 5.2.10 configure error
6月 20th
PHP5.2.10が出たので開発環境へインストール。
5.2.8と同じオプションでconfigureしたのにこんなエラーが出た。
% ./configure --enable-mbstring --enable-soap --enable-zend-multibyte --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-curl --with-curlwrappers --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-mcrypt
.....
configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl -dir>/include/curl/
環境は、
# cat /etc/issue Debian GNU/Linux 5.0 \n \l
headerファイルインストールして解決
# aptitude install libcurl4-gnutls-dev
都道府県マスタ・地域マスタ
6月 4th
- 都道府県
- 都道府県の知名度
- 地域(関東・東海とか)
の情報を定義するスキーマとデータ。
知名度は、Wikipediaにある2005年時点の人口を元にプライオリティを付けました。 数値が高いほど知名度が高いです。
SQLのデータ(MySQL用): [ダウンロード]
CREATE TABLE IF NOT EXISTS `prefectures` ( `prefectures_id` tinyint(3) unsigned NOT NULL auto_increment, `region_id` int(11) NOT NULL, `prefectures_name` varchar(20) NOT NULL, `prefectures_priority` tinyint(3) unsigned NOT NULL default '0', `prefectures_sort` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`prefectures_id`) ) ENGINE=MyISAM; CREATE TABLE IF NOT EXISTS `region` ( `region_id` int(11) NOT NULL auto_increment, `region_name` varchar(255) NOT NULL, `region_sort` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`region_id`) ) ENGINE=MyISAM;
MySQLのYEARは使うべきではない
8月 16th
範囲が狭いし、表現方法が5種類あるし、それぞれに細かいルールがある。 保持できる範囲は1バイト分。’1901′ ~ ‘2155′。 http://dev.mysql.com/doc/refman/4.1/ja/year.html
プログラムや、ユーザ入力の内容によっては予期しない動作をする可能性があるので、年だけを扱うならば、UNSIGNED SMALLINTを使うべき。
MySQLで直前にinsertしたレコードの取得。
8月 10th
MySQL 直前に挿入されたレコードの検索
SELECT * FROM tbl_name WHERE auto_col IS NULL
http://dev.mysql.com/doc/refman/4.1/ja/comparison-operators.html
PHPから使う分には、PDOオブジェクトから取得できるからいらないけど。
最近のコメント