データベースのメモリ使用量を削減する3つのコツ
データベースのメモリがやばい
とにかくメモリ使用量が多いのがDB。
安いVPSの最大の敵です。
抑える方法を語りたい。
基本はデータ量を減らすこと
当然ながらデータ量が一番大事。
基本的に「データ量=メモリ使用量」です。
データ量が1GBあれば、メモリも1GB使用すると考えていい。
インデックスが多いともっと使う。
安くメモリが少ないVPSで多量のデータを格納することはできない。
データの保管だけならできますが、使うことは厳しいです。
そんな基本を踏まえた中で、対策の話を。
1、テキストはDBに格納しない
重たくなる主要因がテキスト
ブログだと記事本文です。
こんなのをDBの保存するとメチャクチャ重たくなる。
テキストはテキストファイルとして保存しよう。
「記事ID」をファイル名にして、そこに保存する。
そうすると記事IDがわかるだけで本文も取得できます。
本文での検索ができなくなるくらいで、特に問題は無い。
ついでに記事タイトルなども保存しておくとなお良い。
実際、DBに格納する情報なんてIDとURLくらいで十分なものです。
2、データ内容はできるだけ少なくする
URLに自サイトのホスト名なんて不要。
入れる文字列等が少ないほどメモリ使用量も少なくなる。
したがって、本当に必要なデータのみ入れるようにします。
カテゴリ名も数字でいい。後で照合すればいいのです。
究極はIDのみの格納。
できるだけint型にするのが理想です。
この意識で工夫すると、けっこうスッキリできます。
DBだけで欲しいデータを作ろうとすると重たくなる。
テキストファイルやPHP等を駆使してデータを作ろう。
DBは暗号的な情報だけでいい。
3、念のためデータはDBに格納しない
アクセスログ等はテキストファイルに保存する。
いつか使うかもしれない程度のデータは入れなくていい。
不正確認のアクセスログはテキストファイルに残しておけば事足ります。
CSV形式で保存しておけばいつでもインポートできる。
DBはけっこうそんな「念のためデータ」が多いものです。
使わないデータは100%無駄。購入したのに使わず捨てるのと同じ。
容量的に問題ないテキストファイルにどんどん入れていこう。
どうしてもDBが良いなら、それだけ別のDBサーバーに分けると良い。
まとめ
工夫すればいくらでも軽くなるのがDB。
PHPやテキストファイルを駆使して表示する設計にすると、
DBに必要なデータというのは意外と少ないものです。
ほとんど数字だけにできる。
最初に構築するのは少し面倒ですが、
作ってしまえばCPUの負荷もメモリ使用量も少ないシステムになる。
VPSのメモリ4Gプランでどんなサイトでも構築できるだろう。
それでもデータ件数が100万件を越えると厳しくなってくる。
長く運営するにはデータ保管期間を短くすることも必須です。
思い切って捨てるのが大事だなと最近よく感じます。
個人の場合、業務的なやり方は真似しなくていいと思う。
非効率だけど速いやり方で構築していこう。
※お金をかけない楽しさがある