标签: storage-engine

InnoDB 或 MyISAM 哪个更快?

MyISAM 如何比 InnoDB“更快”,如果

  • MyISAM 需要为数据做磁盘读取吗?
  • InnoDB 对索引和数据使用缓冲池,而 MyISAM 只用于索引?

mysql innodb myisam storage-engine

59
推荐指数
3
解决办法
13万
查看次数

**NOT** 在 MySQL 中使用 MEMORY 存储引擎的原因是什么?

我最近发现 MySQL 有一个我不知道的“内存”引擎(我的大部分数据库工作都是针对业余项目的,所以我边走边学习我需要的东西)。似乎这个选项应该让我大大提高性能,所以我想知道它是否有任何缺点。我所知道的两个是:

  1. 我需要有足够的内存来保存有问题的表。
  2. 如果机器关闭,这些表就会丢失。

我相信 #1 不应该是一个问题,因为我使用的是 AWS EC2,并且可以根据需要移动到具有更多内存的实例类型。我相信我可以通过根据需要转储回磁盘来缓解 #2。

还有哪些问题?内存引擎能否提供比 MyISAM 或 InnoDB 更差的性能?我想我读过一些关于这个引擎的索引不同的东西;这是我需要担心的事情吗?

mysql storage-engine memory

33
推荐指数
2
解决办法
5万
查看次数

MongoDB MMAPv1 与 WiredTiger 存储引擎

在 mongoDB3 中出现了一个新的存储引擎:WiredTiger然而,MMAPv1仍然是 Mongo 的默认选择

一个可能并不比另一个更好,这通常是用例和为工作​​选择正确工具的问题。但是哪种发动机适合什么工作?

事实上,虽然 MMAPv1 是默认引擎,但WiredTiger 似乎在几乎所有领域都更好。它具有与 MMAPv1 相同的功能以及:

  • 更好的写入性能,
  • 文档级并发,
  • 压缩,
  • 快照和检查点系统。

我在MongoDB 的博客上找到了一个比较表:

WiredTiger 和 MMAPv1 比较

所以除非你在 Solaris 上,否则有理由不选择 WiredTiger 吗?


编辑

这里有两个视频详细解释了WiredTigerMMAPv1的内部 结构

mongodb storage-engine mongodb-3.0

26
推荐指数
2
解决办法
2万
查看次数

在同一台服务器上混合 InnoDB 和 MyISAM 表是常见的做法吗?

我有一个大约 4.5GB 的数据库在具有 8GB RAM 的服务器上运行。绝大多数表都是 MyIsam(大约 4.3GB),但我很快就会其中一些转换为 InnoDB。(这将是一个缓慢的过程,首先关注写入密集度最高的表)。

运行同时存在两种类型存储引擎的专用服务器有什么问题吗?

mysql innodb myisam storage-engine

25
推荐指数
2
解决办法
2万
查看次数

加速 MyISAM 到 InnoDB 的转换

我有一个 mysql 5.1 服务器,其中包含大约 450 个表的数据库,占用 4GB 。这些表中的绝大多数(除了 2 个)都是 MyIsam。这在大多数情况下都很好(不需要事务),但是应用程序一直在增加流量,并且某些表由于更新时的表锁定而受到影响。这就是现在有 2 个表是 InnoDB 的原因。

较小表(100k 行)上的转换根本不需要很长时间,从而导致最少的停机时间。然而,我的一些跟踪表接近 5000 万行。有没有办法ALTER TABLE...ENGINE InnoDB在大桌子上加速?如果没有,是否有其他方法可以最大限度地减少这些写入繁重表的停机时间?

mysql-5 storage-engine

15
推荐指数
2
解决办法
2830
查看次数

必须更新行时,数据库是否会进行删除和插入?

所以今天一位教授告诉我们,当数据库必须进行更新时,在内部(在低级别)它会进行删除,然后使用更新的字段进行插入。然后他说这是跨所有数据库制作的,然后我开始讨论,说我认为这没有意义,但我没有足够的资源来支持我的立场。他似乎知道很多,但我不明白为什么 dbs 会这样做。

我的意思是,我知道如果您更新一个字段并且该行需要更多空间,那么它可能会物理删除该行并将其放在新数据的末尾。但是,如果例如您减少了使用的空间,为什么它会在最后删除并重新插入呢?

这是真的吗?有什么好处?

storage-engine database-engine update

14
推荐指数
1
解决办法
1560
查看次数

槽阵列和总页面大小

我继续在许多论坛和许多博客上看到一个页面的组成如下所示: 页面大小:16 x 512B = 8192B 页眉:= 96B 最大 In_Row 行:= 8060B

这留下 (8192 - 96 - 8060)B = 36B。

好的,这是合乎逻辑且正确的。我的问题是:为什么那么多人说剩下的36B是留给slot array的?

显然,插槽数组在页面上每行给出 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 ;
GO

ALTER DATABASE test
    SET ALLOW_SNAPSHOT_ISOLATION ON ;
GO

ALTER DATABASE test …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 storage-engine data-pages database-internals

13
推荐指数
1
解决办法
1538
查看次数

AWS RDS 是否支持 MEMORY 存储引擎?

标题说明了一切。奇怪的是找不到这方面的结果。

mysql storage-engine aws amazon-rds

12
推荐指数
2
解决办法
3666
查看次数

我正在使用 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/
                              |
| big_tables                                        | OFF
                              |
| binlog_cache_size                                 | 32768
                              |
| binlog_direct_non_transactional_updates           | OFF
                              |
| binlog_format                                     | STATEMENT
                              |
| …
Run Code Online (Sandbox Code Playgroud)

mysql storage-engine memory

10
推荐指数
2
解决办法
2753
查看次数

了解 IAM 页面:范围间隔

我正在阅读 Itzik 的书“查询 Microsoft SQL Server 2012”以及在互联网上阅读/观看不同的教育材料。我的目的是对数据库内部的工作方式有一个有用的理解。

我有点怀疑我无法解决 IAM 页面。由于我处于我理解的早期阶段,我可能需要那些对它有更好了解的人的额外帮助,所以如果我的怀疑看起来很荒谬,请原谅我。

在第 15 章“实施索引和统计”中出现了一个图像 - 如下所示 - 作为 IAM 页面的示例:

示例 IAM 页面

您可以通过红色箭头看到与相同程度相关的 16 页。这怎么可能?这是作者/编辑的错误吗?或者更有可能的是:有什么我没有正确理解的吗?

我的另一个问题与页面间隔有关。为什么它们不相邻?以最后一个extent为例,它将覆盖id为336到22642的页面,或者前一个,296到328的页面。

sql-server storage-engine database-internals

9
推荐指数
1
解决办法
523
查看次数