私は、MySQLデータベースのキャッシュ層を作成する必要があります。データベースはおよそ100のテーブルと数百万の行で膨大です。ほとんどすべてのテーブルには、外部キーの関係があります。たとえば :MySQL用クエリ可能キャッシュ
表:ルール
CREATE TABLE `rule` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`code` varchar(256) NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_rule_code` (`code`)
)
表:paramsが
CREATE TABLE `params` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`rule_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `rule_id` (`rule_id`),
CONSTRAINT `params_ibfk_1` FOREIGN KEY (`rule_id`) REFERENCES `rule` (`id`)
)
私は別に のparamsテーブルについても同様にキーとルールテーブルの行を格納するとすることができますよ。今、私はこれに似たところの条件のいくつかの並べ替え、使用して両方のテーブルから行を取得したい:
Select * from rule r, params p where r.id = p.rule_id and r.id = (some_value);
私がデータをキャッシュすることができます方法はありますし、また、それに参加する実行(基本的に実行しています?上記のキャッシュに関するクエリ)
これをキャッシュするにはどうすればよいですか?エアロ、Redisの、MongoDBのなど、
あなたは、この実装
MySQLにはキャッシュが内蔵されているため、調整することから始める方が妥当でしょうか? https://www.percona.com/blog/2015/01/02/the-mysql-query-cache-how-it-works-and-workload-impacts-both-good-and-bad/ http:///dev.mysql.com/doc/refman/5.7/en/query-cache-configuration.html – michaJlS
@MichałSznurawa問題は、フェッチされるデータが大きく(約30Mb)、使用されているテーブルが頻繁に更新されることです約3回の更新/秒)、組み込みキャッシュを使用できないようにする –
データの使用方法についてもっと詳しく書くことができますか?どのくらいの頻度で読み込みが行われ、常に新鮮なコピーを取得する必要がある場合は、 – michaJlS