繁体   English   中英

大量选择的存储引擎

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM