在mysql上创建日志表最好的存储引擎是什么?
该表将有两个if id字段(Int)、一个日期字段、一个用于消息级别的varchar和一个包含消息的文本字段。
它将记录所有类型的事情,用户操作,系统事件等。预计它将迅速增长。
其中的记录永远不会被修改,也很少被访问。访问时,应该可以按日期、级别和id进行排序。
一个有趣的选项是存档引擎。它满足所有条件,但有一个很大的缺点,不仅不能删除记录,甚至不能清除表。清除该表的唯一方法是删除它并重新创建它。
有什么建议吗?
发布于 2011-12-02 07:25:31
嗯,根据你的问题,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用于“合并”驻留在同一台机器上的已分区表。当您将一个大表拆分为几个较小的表,并使用合并表同时访问它们时,最大的好处就是它的速度。搜索和排序将执行得更快,因为表中的数据更少。
https://stackoverflow.com/questions/8349752
复制相似问题