相关疑难解决方法(0)

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

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

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

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

mysql innodb myisam mysqldump mysql-5.5

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

MySQL 的事务性 DDL 工作流

我有点惊讶地发现,DDL语句(alter tablecreate index等)隐含在MySQL提交当前事务。来自 MS SQL Server,在本地事务(然后回滚)中进行数据库更改的能力是我工作流程的重要组成部分。对于持续集成,如果迁移因任何原因而中断,则使用回滚,这样至少我们不会让数据库处于半迁移状态。

人们在使用 MySQL 进行迁移和持续集成时如何解决这两个问题?

mysql transaction ddl rollback

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

表上的 MySQL 索引创建失败已满

更新:tl;dr:问题是 MySQLTMPDIR在创建索引时使用。而我TMPDIR的磁盘空间不足。

原问题:

我正在尝试向 InnoDB 表添加索引,并获得table is full error. 我有足够的磁盘空间,并且 MySQL 配置有一个 file-per-table=1。表数据为 85GB,我假设索引将在 20GB - 30GB 左右,而且我的磁盘空间比这多得多。我也在使用 ext3,所以从操作系统的角度来看,我认为文件大小限制没有任何问题。

记录的错误如下所示:

140616 13:04:33  InnoDB: Error: Write to file (merge) failed at offset 3 1940914176.
InnoDB: 1048576 bytes should have been written, only 970752 were written.
InnoDB: Operating system error number 0.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a …
Run Code Online (Sandbox Code Playgroud)

mysql innodb index

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

即使设置了 innodb_file_per_table,Innodb ibdata1 文件如何增长 5 倍?

我设置了 innodb_file_per_table 并且就在今天,在我对 800M 表进行了几次更改以将其减少到大约 600M 之后,我的 ibdata1 文件从 59M 跳到了 323M。该特定表的 .ibd 文件减少了,但服务器的 ibdata1 文件变得疯狂。有任何想法吗?

mysql innodb ibdata

7
推荐指数
1
解决办法
3052
查看次数

标签 统计

mysql ×4

innodb ×3

ddl ×1

ibdata ×1

index ×1

myisam ×1

mysql-5.5 ×1

mysqldump ×1

rollback ×1

transaction ×1