开发者社区 问答 正文

MyISAM与InnoDB

我要说的是一个涉及大量数据库写入的项目(70%的插入和30%的读取)。这个比率还将包括我认为是一次读取和一次写入的更新。读取内容可能很脏(例如,读取时我不需要100%准确的信息)。 有问题的任务将是每小时进行超过一百万次数据库事务。

我已经在网上阅读了很多有关MyISAM和InnoDB之间差异的内容,对于我要用于此任务的特定数据库/表,MyISAM似乎是我的明显选择。从我看来,由于需要支持行级锁定,因此如果需要事务处理,InnoDB很好。

是否有人对这种负载(或更高负载)有任何经验?MyISAM是要走的路吗?

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 15:41:07 327 分享 版权
1 条回答
写回答
取消 提交回答
  • 底线:如果您正在离线处理大量数据,则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值的外部表)。

    2019-11-15 15:41:33
    赞同 展开评论
问答分类:
问答地址: