Mic*_*wan 33 mysql storage-engine memory
我最近发现 MySQL 有一个我不知道的“内存”引擎(我的大部分数据库工作都是针对业余项目的,所以我边走边学习我需要的东西)。似乎这个选项应该让我大大提高性能,所以我想知道它是否有任何缺点。我所知道的两个是:
我相信 #1 不应该是一个问题,因为我使用的是 AWS EC2,并且可以根据需要移动到具有更多内存的实例类型。我相信我可以通过根据需要转储回磁盘来缓解 #2。
还有哪些问题?内存引擎能否提供比 MyISAM 或 InnoDB 更差的性能?我想我读过一些关于这个引擎的索引不同的东西;这是我需要担心的事情吗?
Dav*_*ett 27
查看http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html上的功能可用性列表,两个可能的问题会跳出来:
除此之外,假设您有足够的 RAM,基于内存的表应该比基于磁盘的表快。显然,您需要考虑将快照写入磁盘以解决重置服务器实例时发生的问题,如果数据需要经常捕获(如果您可以忍受失去一天的时间),这可能会完全抵消整体性能优势在这种情况下,您可以每天只备份一次数据,但在大多数情况下这是不可接受的)。
另一种方法可能是:
SELECT * FROM <table> ORDER BY <pkey fields>依次为每个表和SELECT <indexed fields> FROM <table> ORDER BY <index fields>每个索引这样您的所有数据都在 RAM 中,您只需担心写入操作的 I/O 性能。如果您的应用程序的公共工作集比整个数据库小得多(通常情况下是这样 - 在大多数应用程序中,大多数用户只会查看最新的数据),您最好对多少有更多的选择性您扫描以预加载到内存中,从而允许根据需要从磁盘加载其余部分。
| 归档时间: |
|
| 查看次数: |
47308 次 |
| 最近记录: |