标签: myisam

263
推荐指数
10
解决办法
27万
查看次数

如何安全地更改 MySQL innodb 变量“innodb_log_file_size”?

所以我对调整 InnoDB 还很陌生。我正在慢慢地将表(在必要时)从 MyIsam 更改为 InnoDB。我在 innodb 中有大约 100MB,所以我将innodb_buffer_pool_size变量增加到 128MB:

mysql> show variables like 'innodb_buffer%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

当我去更改innodb_log_file_size值时(例如mysql 的 innodb 配置页面my.cnf注释将日志文件大小更改为缓冲区大小的 25%。所以现在我的 my.cnf 看起来像这样:

# innodb
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
Run Code Online (Sandbox Code Playgroud)

当我重新启动服务器时,出现此错误:

110216 9:48:41 InnoDB:初始化缓冲池,大小 = 128.0M
110216 9:48:41 InnoDB:缓冲池初始化完成
InnoDB:错误:日志文件 ./ib_logfile0 的大小不同 0 5242880 字节
InnoDB:比指定的.cnf 文件 0 33554432 字节!
110216 9:48:41 [错误] …

mysql innodb myisam logs

113
推荐指数
3
解决办法
21万
查看次数

InnoDB 或 MyISAM 哪个更快?

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

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

mysql innodb myisam storage-engine

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

为什么 InnoDB 将所有数据库存储在一个文件中?

MyISAM 用于将每个表存储在相应的文件中很方便。InnoDB 在很多方面都取得了进步,但我想知道为什么 InnoDB 将所有数据库存储在一个文件中(ibdata1默认情况下)。

我知道 InnoDB 将通过表的单个索引文件映射文件中数据的位置,但我不明白为什么它将所有数据混合在一个文件中。更重要的是,为什么要混合服务器上所有数据库的数据?

MyISAM 的一个有趣功能是,可以将数据库文件夹复制/粘贴到另一台机器上,然后使用该数据库(无需转储)。

mysql innodb myisam mysqldump mysql-5.5

56
推荐指数
3
解决办法
7万
查看次数

如何尽可能快地更新 MySQL 单表中 1000 万+ 行?

大多数表使用 MySQL 5.6 和 InnoDB 存储引擎。InnoDB 缓冲池大小为 15 GB,Innodb DB + 索引大约为 10 GB。服务器有 32GB RAM 并运行 Cent OS 7 x64。

我有一张包含大约 1000 万条记录的大表。

我每 24 小时从远程服务器获取更新的转储文件。该文件为 csv 格式。我无法控制那种格式。该文件约为 750 MB。我尝试将数据逐行插入 MyISAM 表,花了 35 分钟。

我只需要从文件中的每行 10-12 中取出 3 个值并在数据库中更新它。

实现这样的目标的最佳方法是什么?

我需要每天都这样做。

目前 Flow 是这样的:

  1. mysqli_begin_transaction
  2. 逐行读取转储文件
  3. 逐行更新每条记录。
  4. mysqli_commit

以上操作大约需要30-40 分钟才能完成,在执行此操作时,还有其他更新正在进行中,这给了我

超过锁等待超时;尝试重新启动事务

更新 1

使用LOAD DATA LOCAL INFILE. 在 MyISAM 中,38.93 sec在 InnoDB 中需要 7 分 5.21 秒。然后我做了:

UPDATE table1 t1, table2 t2
SET …
Run Code Online (Sandbox Code Playgroud)

mysql myisam performance update mysql-5.6

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

为什么 MySQL 在 MyISAM 或 InnoDB 上没有哈希索引?

我有一个只选择相等的应用程序,我想我应该在 btree 索引上使用哈希索引。令我沮丧的是,MyISAM 或 InnoDB 不支持哈希索引。那是怎么回事?

mysql innodb myisam index

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

为什么 InnoDB 上的简单 SELECT 比 MyISAM 慢 100 倍?

我有一个很烦人的问题。我想使用 INNODB 作为我的主要数据库引擎并放弃 MyISAM,因为我需要前者来使用 galera-cluster 进行冗余。

我将newbb_post表复制(描述如下)到一个名为的新表newbb_innopost并将其更改为 InnoDB。每个表当前都保存5,390,146条目。

在新启动的数据库上运行这些选择(因此此时不涉及缓存!)数据库产生以下结果(省略完整的输出,请注意我什至不要求数据库对结果进行排序):

SELECT post.postid, post.attach FROM newbb_post AS post WHERE post.threadid = 51506;

.
.
| 5401593 | 0 |
| 5401634 | 0 |
+---------+--------+
62510 行(0.13 秒)
SELECT post.postid, post.attach FROM newbb_innopost AS post WHERE post.threadid = 51506;
.
.
| 5397410 | 0 |
| 5397883 | 0 |
+---------+--------+
62510 行(1 分 22.19 秒)

0.13 秒到 86.19 秒 (!)

我想知道为什么会这样。我确实在 Stackexchange 上阅读了一些涉及 InnoDB …

mysql innodb myisam performance

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

如何更改 phpmyadmin 中的默认存储引擎?

我几乎只在我的应用程序中使用 InnoDB。但是,如果我在设置表时不小心,我会忘记更改它并且 phpmyadmin 坚持使用 MyISAM。有没有办法更改默认存储引擎?

mysql innodb myisam phpmyadmin

31
推荐指数
1
解决办法
5万
查看次数

表分区有何帮助?

我很难理解表分区的优缺点。我即将开始一个项目,该项目将有 8 个表,其中一个将是主数据表,将包含 180-260 百万条记录。因为它将是正确索引的表,所以我正在考虑将表记录限制为 2000 万,这样我将不得不创建 9-13 个表。

但我不太确定它将如何提高性能,因为它们将位于同一台机器上(32GB RAM)?

我正在使用 MySQL 并且表将是 MyISAM 并且大表将在 id 字段上有索引,并且没有进一步的复杂性,例如全文搜索等。

还请阐明表分区与数据库分区。

mysql myisam performance database-design partitioning

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

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

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

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

mysql innodb myisam storage-engine

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