我要说的是一个涉及大量数据库写入的项目(70%的插入和30%的读取)。这个比率还将包括我认为是一次读取和一次写入的更新。读取内容可能很脏(例如,读取时我不需要100%准确的信息)。 有问题的任务将是每小时进行超过一百万次数据库事务。
我已经在网上阅读了很多有关MyISAM和InnoDB之间差异的内容,对于我要用于此任务的特定数据库/表,MyISAM似乎是我的明显选择。从我看来,由于需要支持行级锁定,因此如果需要事务处理,InnoDB很好。
是否有人对这种负载(或更高负载)有任何经验?MyISAM是要走的路吗?
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
底线:如果您正在离线处理大量数据,则MyISAM可能会为您提供更好(更好)的速度。
在某些情况下,MyISAM比InnoDB效率更高:当脱机处理大型数据转储时(由于表锁定)。
示例:我正在从NOAA转换一个CSV文件(1500万个记录),该文件使用VARCHAR字段作为键。即使有大量可用内存,InnoDB也会永远占用时间。
这是csv的示例(第一个和第三个字段是键)。
USC00178998,20130101,TMAX,-22,,,7,0700 USC00178998,20130101,TMIN,-117,,,7,0700 USC00178998,20130101,TOBS,-28,,,7,0700 USC00178998,20130101,PRCP,0,T,,7,0700 USC00178998,20130101,SNOW,0,T,,7, 由于我需要做的是对观察到的天气现象进行批量脱机更新,因此我使用MyISAM表接收数据并在键上运行JOINS,以便我可以清理传入文件并用INT键替换VARCHAR字段(这与存储原始VARCHAR值的外部表)。