在mysql上使用日志表的最佳存储引擎是什么?
如果id字段(int)有一个日期字段,消息级别的varchar和带消息的文本字段,该表将有一对。
它将记录所有类型的事物,用户操作,系统事件等。预计它会迅速增长。
其中的记录永远不会被修改,很少被访问。访问时,应按日期级别和ID进行排序。
一个有趣的选项是归档引擎。它符合所有标准,但有一个很大的缺点,不仅不能删除记录,甚至不能清除表。清除表的唯一方法是删除它并重新创建它。
有什么建议吗?
答案 0 :(得分:27)
那么,根据你的问题,InnoDB应该做的工作是因为:
Check this for more information
修改强>
那么,你在评论中询问其他引擎。这是一个full list引擎。其中,如你所说存档有缺点,其他不适合你的要求。以下是MySQL网站的引文:
InnoDB has been designed for maximum performance when processing large data volumes.
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.
基本上是这样的:
说实话,我曾经花了很多时间才开始编码。我研究了几个小时,也许是几天关于一个问题,看看哪种方式最合适。我会告诉你什么,研究是好的,但是在一点之后,如果它阻止你工作,那么你应该停下来,喝一杯咖啡,然后马上做出选择。因此,只要尝试最合适的一个,就像你将体验到的那样,通过自己尝试,你会发现更好的方法。我的意思是,我不相信Facebook是为这样的音量设计的,但随着它的发展,它们继续相应地改变结构。这就是我所相信的,可能不是现实:)无论如何,希望信息可以帮助你。
编辑2013
您将在下面找到内置MySQL存储引擎的简要说明。
的MyISAM
这些表包括其他优化,例如高级缓存和索引机制,可以快速访问数据。使用表级锁定,MyISAM存储引擎提供并发操作。当阅读性能受到关注时,通常,MyISAM是您的选择。
内存
也称为堆表,内存表非常适合快速检索很少更改的常用数据(例如国家/地区代码,邮政编码或其他查找表)。顾名思义,数据存储在内存中,因此访问速度比存储在磁盘中的数据快得多。使用内存的一个重要限制是数据在MySQL会话期间有效。当它崩溃或关闭数据时会丢失。
InnoDB的
您需要使用此存储引擎的一种情况是您需要使用外键或事务。 InnoDB比MyISAM更并发,因为它提供行级锁定。存储引擎非常可靠。当您想要使用此存储时,另一种情况是您有更多写入而不是读取。当您经常将数据写入表中时,尝试使用此存储,它比MyISAM更并发。
存档的
它旨在以压缩格式存储大量数据。此存储引擎的一个用例是存储归档或历史数据或安全日志。该表不使用索引,因此对于日常数据检索和存储而言,它不是一个好的选择。它是行级锁定,数据在需要时即时解压缩。此外,不可能改变表格。
合并
Merge用于“合并”位于同一台计算机上的分区表。将大表拆分为多个较小的表并使用合并表同时访问它们时,最大的好处是它的速度。由于表中的数据较少,因此搜索和排序会更快。