Questions tagged «storage-engine»


7
为什么不能在MySQL中使用MEMORY存储引擎的原因是什么?
最近,我发现MySQL具有一个我不知道的“内存”引擎(我的大部分数据库工作是针对业余项目的,因此我会随时了解自己的需求)。看来此选项应该可以大大提高我的性能,所以我想知道它是否有任何缺点。我知道的两个是: 我需要有足够的RAM来容纳有问题的表。 如果机器关闭,表将丢失。 我认为#1应该不是问题,因为我正在使用AWS EC2,并且可以根据需要移到具有更多内存的实例类型。我相信我可以通过根据需要转储回磁盘来减轻#2的压力。 还有什么其他问题?内存引擎能否提供比MyISAM或InnoDB更差的性能?我认为我读到的东西与此引擎的索引不同;这是我需要担心的事情吗?

3
MongoDB MMAPv1与WiredTiger存储引擎
在mongoDB3中出现了一个新的存储引擎:WiredTiger。但是,MMAPv1仍然是Mongo中的默认选择。 一个可能不会比另一个更好,这通常是一个用例问题,并为工作选择了正确的工具。但是,哪种发动机最适合什么工作? 实际上,虽然MMAPv1是默认引擎,但 WiredTiger在几乎每个领域似乎都更好。它具有与MMAPv1 plus相同的功能: 更好的写入性能, 文档级并发, 压缩, 快照和检查点系统。 我在MongoDB的博客上找到了一个比较表: 因此,除非您使用Solaris,否则是否有理由不选择WiredTiger? 编辑 这是两个视频,详细介绍了WiredTiger和MMAPv1的内部 。


3
加快将MyISAM转换为InnoDB的速度
我有一个带有约450个表的数据库的mysql 5.1服务器,占用4GB。这些表中的绝大多数(除2个以外的所有表)都是MyIsam。这在大多数情况下都很好(不需要事务),但是应用程序一直在增加流量,并且某些表由于更新上的表锁定而受到影响。这就是表中的2个现在是InnoDB的原因。 较小的表(10万行)上的转换根本不需要花费很长时间,从而导致停机时间最少。但是,我的一些跟踪表接近5000万行。有没有一种方法可以加快ALTER TABLE...ENGINE InnoDB大桌子的摆放速度?如果不是,是否有其他方法可以在这些写繁重的表上进行转换以最大程度地减少停机时间?

1
在必须更新行时,数据库会进行删除还是插入?
因此,今天一位教授告诉我们,当数据库必须在内部(低级)进行更新时,它将进行删除,然后使用已更新的字段进行插入。然后他说这是在所有数据库中完成的,然后我开始讨论,告诉我认为这没有意义,但我没有足够的资源来支持我的职位。他似乎知道很多,但我不明白为什么数据库管理员会这样做。 我的意思是,我知道,如果您更新一个字段并且该行需要更多空间,那么它可能会物理删除该行并将其放在新数据的末尾。但是,例如,如果您减少了使用的空间,为什么要删除它并在最后插入它呢? 这是真的吗?有什么好处?

1
插槽阵列和总页面大小
我继续在许多论坛和博客中读到一个页面构成,如下所示:页面大小:16 x 512B = 8192B页面标题:= 96B最大行内行:= 8060B 这留下(8192-96-8060)B = 36B。 好的,这是合乎逻辑且正确的。我的问题是:为什么有那么多人说剩下的36B是为插槽阵列保留的? 显然,插槽数组在页面上每行提供2B的空间;因此,它可以小至2B,大至1472B: 2B:1行* 2B = 2B 1472B:8096B = n * 9B(带有开销的最小行大小...考虑单个TINYINT列)+ n * 2B(每行的插槽阵列成本)=> 8096 = 11n => n = 8096/11 = 736。 736 * 2B = 1472B。 由于使用14B版本标记,因此我的排名为20。 USE master ; GO CREATE DATABASE test ; GO USE test …

3
我正在使用MEMORY存储引擎,但MySQL仍会写入磁盘...为什么?
我正在使用MEMORY Engine与特定MYSQL查询关联的所有表,因为访问速度对我的项目至关重要。 由于某种原因,我注意到仍然发生大量磁盘写入。 这是因为Windows将RAM交换到磁盘上吗?如何防止这种情况发生? 编辑:这是我的全局变量: mysql> show global variables; +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | Variable_name | Value | +---------------------------------------------------+-------------------------------------------------------------------------------- ------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | C:/Program Files/MySQL/MySQL Server 5.5/ …

1
了解IAM页面:范围间隔
我正在阅读Itzik的书《查询Microsoft SQL Server 2012》,以及在互联网上阅读/观看不同的教学材料。我的目的是对数据库内部如何工作有一个有益的了解。 我有一个小小的疑问,我无法解决有关IAM页面的问题。由于我尚处于了解的初期,因此也许我需要那些了解情况更好的人的额外帮助,因此,如果我的疑问似乎很可笑,请原谅我。 在第15章“实现索引和统计信息”中,出现了一个图像-如下图所示-作为IAM页面的示例: 您可以通过红色箭头看到与同一范围相关的16页内容。那怎么可能?是作者/编辑的错误吗?还是更有可能的:我是否有一些不正确的理解? 我的另一个问题与页面间隔有关。为什么它们不连续?以最后一个范围为例,它将覆盖ID为336至22642或前一个ID为296至328的页面。

1
是否可以从BLACKHOLE表中恢复数据?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为数据库管理员Stack Exchange 的主题。 5年前关闭。 我已经使用引擎BLACKHOLE创建了表, 基本上,BLACKHOLE存储引擎充当了“黑洞”,该黑洞可以接受数据,但会将其丢弃而不进行存储。检索总是返回空结果。 听说我们可以通过使用存储引擎为innodb或myisam的新表创建与旧表相同的新表来检索数据。但是我也尝试过,但是无法获得结果。任何人都可以帮助我解决此问题。 mysql> CREATE TABLE test1(i INT, c CHAR(10)) ENGINE = BLACKHOLE; Query OK, 0 rows affected (0.08 sec) mysql> INSERT INTO test1 VALUES(1,'record one'),(2,'record two'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.