日別アーカイブ: 2012年2月29日

MySQLでランダムな文字列を差し込む – MySQL CHAR ROUND RAND VPS

 プチMySQLメモ

 以前、intにランダムな数値を差し込んだ。

 今回はランダムな文字を差し込んでみる。

1文字だけを差し込む場合、

UPDATE vps SET vps_id = CHAR(ROUND(RAND()*25)+65);

 CHAR関数は、与えた数値を文字コードとして評価して文字を出力する。
 65が大文字Aで、+25番が大文字Z。 大文字と小文字を混ぜたい場合、コードが連続していないので、ランダムで大文字範囲と小文字範囲を分岐することになる。

 既定文字数差し込む場合にはCONCAT(文字列連結)を使って・・・

UPDATE vps SET vps_id = CONCAT(CHAR(ROUND(RAND()*25)+65),CHAR(ROUND(RAND()*25)+65));

 とりあえずこれでSQLだけでランダム文字列を挿せる。

(1531)

カテゴリー: MySQL | コメントをどうぞ

VPS上のHTTPで通信帯域を節約する01 – apache httpd deflate mod_deflate vps

 VPS上でHTTPdを利用しているときに、通信帯域の頭打ちで応答が低下することがある。
 さくらのVPSだと、割り当て帯域は100Mbpsなので、重いページを提供していると結構かつかつになる。
 そんなときに便利なのが、Apacheのmod_deflateモジュール。
 こいつを使うと、データ本文をgzip等で圧縮して転送できる。 HTMLは辞書が有効に働きやすく(タグであるとか、style等の属性等が定形なので)、これを適用すると100KBのページを10KB弱の転送で済ませたり出来る。

 とりあえず、.htaccessで使う場合の設定。

SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html

#1 DEFLATEフィルタを有効にする。
#2 MIMEタイプがtext/htmlである物に対してDEFLATEフィルタを適用にする。
httpd.confでmod_deflateを読み込んでいてAllowOverrideされていれば、.htaccessで制御できる。

 VPSではネットワーク帯域が狭いことがあるので、CPUパワーに余裕があれば活用したいモジュールだ。

(273)

カテゴリー: サーバ設定 | コメントをどうぞ

MySQL最適化メモ02 – MySQL EXPLAIN type 開発

 MySQL最適化メモ01の続きで、typeの残り。 ref_or_nullより遅いタイプ。

・index_merge
 複数のインデックスを結合したタイプ。

SELECT * FROM vps_table WHERE column_one > 10 AND column_two > 20

・range
 インデックスの範囲を限定する(2値で挟み込むか、いくつかの候補から得る)場合のタイプ。

SELECT * FROM vps_table WHERE column_one > 10 AND column_one < 20

・index
 インデックス全域をスキャンする場合のタイプ。
 インデックスはデータ全域よりも小さいはずなのでALLよりはマシだけど、インデックスに適した動作をしていない(木やハッシュの探索で確定できず、インデックスを最後まで読まなければならない)

・ALL
 データ全域をスキャンする場合のタイプ。
 さくらのVPS 4GBでキャッシュされていても、1万レコードを全域スキャンすると分単位かかったりする一番低速な動作。
 ~数十レコード程度のタイプ値保持等の用途以外でこれが出てきたらクエリ解析してインデックスを貼る。

(131)

カテゴリー: MySQL | コメントをどうぞ