我正在研究涉及大量数据库写入的项目,我会说(70%的插入和30%的读取).该比率还包括我认为是一次读取和一次写入的更新.读取可能很脏(例如,在读取时我不需要100%准确的信息).
有问题的任务将是每小时进行超过100万次数据库事务.
我在网上看到了一些关于MyISAM和InnoDB之间差异的东西,对于我将用于此任务的特定数据库/表格来说,MyISAM似乎是我的明显选择.从我似乎正在阅读的内容来看,如果需要事务处理,InnoDB很好,因为支持行级锁定.
有没有人有这种负载(或更高)的经验?MyISAM是走的路吗?
MySql中的MyISAM和Inno数据库类型有什么区别?
有人告诉我InnoDB比MyISAM好多了.所以当我创建一个表时,我是否应该总是尝试使用InnoDB Engine而不是MyISAM?或者两者都有它的巨大好处?
我有一张非常简单的桌子
CREATE TABLE IF NOT EXISTS `largecache` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`tooltip` varchar(255) NOT NULL,
`name` varchar(100) NOT NULL,
`attributes` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `tooltip` (`tooltip`)
) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)
大约有800万个条目几乎完全用于读取.我正在努力确保尽快访问数据.我目前正在使用InnoDB,是否值得切换到MyISAM?我唯一关心的是读取性能.此外,我可以使用任何其他建议加速,因为数据库读取几乎是我应用程序中唯一的瓶颈.
我正在使用MySQL客户端版本:5.1.47
谢谢.
[编辑:更多细节]我正在使用php,我正在查询基于工具提示字段的完全匹配.它被托管在一个共享的VPS上,有1个内存,我可以尝试对mysql进行任何调整,但我知道mysql调整是一个非常复杂的问题.
示例查询:
select * from largecache where `tooltip` = "Cm8IuIyq9QMSBwgEFS0iGWAd30SUNR2EHJ0nHYYCY-odxZ6okR0pEnPgHWzQbvIiCwgBFXZCAwAYCCAiMAk4_gNAAEgPUBBg_gNqJQoMCAAQvKHZ5oCAgIA6EhUIrcC1xggSBwgEFUn1i18wCTgAQAEY2ojJgQxQAlgA"
Run Code Online (Sandbox Code Playgroud)
我确实安装了APC,但没有安装memcached