[英]Storage engine for high volume of selects
我正在使用圣经创建一个API,在此我希望能够尽可能消除数据库瓶颈。 我的数据被相当非规范化,以消除大多数不必要的联接。
鉴于圣经的文字没有改变 ,我几乎不会做任何INSERT
声明。 我唯一要插入数据的时间是在添加新翻译时,这会定期发生,但是我不在乎这里的速度。
但是,我将做大量的 SELECT
语句。
我不需要任何跨国的,符合ACID的功能。 我最关心的是速度。
理想的MySql存储引擎将适合这些条件?
我知道每个引擎的基础知识(我想MyISAM
是理想的),因此我正在寻找一个可以用统计数据或进一步推理支持的答案,以证明对其中一些引擎的深入了解。
尽管使用NoSQL
可能比RDBMS
更好,但这不是我要查找的信息。
就文件大小而言,圣经很小。 就像你说的一样。
为了获得最佳读取性能,请考虑使用内存。 这具有不能使用文本/斑点的限制。 但是,只要将您的数据分为65,533个字符块,就可以了。
http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html
使用内存还意味着如果断电/服务器重新启动,所有数据都会丢失。 因此,定期写入磁盘将非常有用,并且在重新启动时,您将需要再次填充该表。
尽管所有表都存储在RAM中,但与其他方法相比,您将需要额外的RAM才能使用此方法
从评论中的问题开始。
医生说
要在MySQL服务器启动时填充MEMORY表,可以使用--init-file选项。 例如,您可以将诸如INSERT INTO ... SELECT或LOAD DATA INFILE之类的语句放入此文件,以从持久性数据源中加载表。 请参见第5.1.3节“服务器命令选项”和第13.2.6节“ LOAD DATA INFILE语法”。
http://dev.mysql.com/doc/refman/5.5/zh-CN/memory-storage-engine.html#idp82809968
http://dev.mysql.com/doc/refman/5.5/zh-CN/server-options.html#option_mysqld_init-file
同样,您将需要使此文件保持最新,并进行任何更改。 (可以使用mysqldump对其进行维护)
具有良好索引的Innodb甚至可能具有良好的分区。 innodb旨在通过multible线程客户端(同时读取更多客户端)具有更好的性能,而MyISAM并非为此而构建。
如果服务器配置正确,则Innodb确实会破坏myisam的性能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.