Questions tagged «innodb»

InnoDB:MySQL的符合ACID的存储引擎

2
从MyISAM转换为InnoDB有任何麻烦吗?
我已经准备好从MyISAM迁移到InnoDB,但想知道是否有要查找的完整列表?例如,我没有看到任何列表提到DISABLE KEYS在InnoDB表上运行会抛出警告,除了的手册页ALTER TABLE。在转换之前,我需要了解这种事情。我以为我可以查询很好,但显然不行。
11 mysql  innodb  myisam 

5
不完整的mysqldump
我正在尝试运行mysqldump来创建数据库快照,并且发现它会在途中随机停止,而不会报告任何错误。我的数据库相对较小(大约100MB),并且正在使用InnoDB。 我像这样运行它: mysqldump --force --single-transaction --quick --user myuser --password=mypass -h mydatabasehost mydb > /tmp/snapshot.sql 检查退出代码报告0。 我的版本是:用于redhat-linux-gnu(i386)的mysqldump Ver 10.13 Distrib 5.1.52 我见过一些类似的帖子,甚至见过正式的错误报告,但似乎都没有解决方案。 如何获取mysqldump来拍摄完整的数据库快照? 编辑:我的数据库当前位于Amazon的RDS上。

2
InnoDB创建表错误:“行大小太大”
我们有一些工程师将标准化的db结构展平为临时表,以生成报告。列指定为TEXT NOT NULL(我知道“他们为什么这样做?”;让我们假设我们正在解决此问题)。 我们在Linux上使用带有InnoDB插件1.0.9的MySQL 5.1.48 Community RHEL5。 使用MyISAM时,我们从未遇到最大列或最大行长度的表大小限制(在调查过程中,我们达到了最大列限制为2598(第2599个原因导致错误1117)。使用InnoDB时,我们达到了限制。表(无数据插入)为: 第1行的错误1118(42000):行大小太大。使用的表类型的最大行大小(不计BLOB)为8126。您必须将某些列更改为TEXT或BLOB 我正在寻找以下问题的答案: 使用很多v / v / b / t列时确定行大小特殊性的详细公式是什么?我已经尝试过使用varchar(N)列(其中N在1到512之间),UTF8字符集(* 3)和表将使用的列数直到失败为止的几种不同形式形式。我尝试过的所有组合都不提供与实际测试结果匹配的值。 计算行大小时,我还必须考虑其他哪些“开销”? 当我从使用varchar(109)列创建表到varchar(110)列时,为什么错误消息从8126变为65535?
11 mysql  innodb 

3
错误-函数'innodb'已经存在
我正在寻找开始将一些MyISAM表转换为INNODB。在4核/ 8线程cpu上运行带有MySQL 5.6(apt-get从5.5升级),32G ram的Ubuntu 14.04 Server。最初遇到麻烦... could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL 和 Error: Table "mysql"."innodb_table_stats" not found. 我遵循了Rolando的建议,数据库不再崩溃或创建巨大的error.log。 (以上问题已不存在,仅描述了主要事件) 现在,在将任何内容转换为INNODB之前,我担心以下错误。从我阅读的内容中可以忽略联合,下面的第二行(也是本文的主题)与我有关 2014-05-19 01:50:57 30950 [Note] Plugin 'FEDERATED' is disabled. 2014-05-19 01:50:57 30950 [ERROR] Function 'innodb' already exists 2014-05-19 01:50:57 30950 [Warning] Couldn't load plugin named …
11 mysql  innodb 


2
如何在MySQL中对外键使用RESTRICT?
在数据库结构中 CREATE TABLE Country ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE City ( name varchar(40) NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE Map ( country varchar(40) NOT NULL, city varchar(100) NOT NULL, PRIMARY KEY (country,city), FOREIGN KEY (country) REFERENCES …

1
MySQL的行大小错误
我在Macbook上运行MySQL服务器(用于测试)。版本是Homebrew的5.6.20。我开始遇到“行大小太大”错误,并且能够将其减少到此测试用例。表: mysql> describe test; +-------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | stuff | longtext | YES | | NULL | | +-------+----------+------+-----+---------+----------------+ 表格状态: mysql> show table status where …
11 mysql  innodb 

5
无法创建表,但表不存在
我正在使用这些步骤来创建一个表my_user,该表已经存在,但以某种方式从我的数据库中消失了my_db: mysql> USE my_db; mysql> DROP TABLE my_user; mysql> ERROR 1051 (42S02): Unknown table 'my_user' mysql> CREATE TABLE my_user (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(255), group_id VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; mysql> ERROR 1005 (HY000): Can't create table 'my_db.my_user' (errno: …
11 mysql  innodb 

5
计算表的行大小和最大行大小
问题: 有什么方法可以计算表创建所占用的字节数,我知道您可以从information_schema.tables中获取一些信息,但是该信息不够准确。 实际需要的是根据表定义(仅针对innodb的字节数),归类也可以视为utf-8-general-ci 例如表测试如下 创建表测试 ( col1 varchar(25), col2 int, col3 varchar(3), col4 char(15), col5 datetime ); 现在需要根据表中的列类型知道一行中可以累积的总行大小。 在MSSQL中找到了某种类似的解决方案,但需要其MySQL版本 用于估算任何表的行大小的脚本 任何帮助深表感谢。

1
MySqlDump的DISABLE KEYS对导入无效
我对我之前关于Inno-Tables的导入速度的问题有一个后续问题(惊奇!)。 方案 我尝试在合理的时间内在本地开发计算机上导入一些big *数据库转储。我们KEY在表上附加了许多s,这些表原来是瓶颈,但对于我们的实时系统仍然很重要。 在问完上述问题后,我的方法是KEY ...从转储,导入和重新添加键中删除语句。 但是,我经常发现自己正在编辑当前的转储以将其导入本地,并且偶然发现了这些有趣的“注释”(- disable/enable keys行) -- -- Dumping data for table `monster` -- LOCK TABLES `monster` WRITE; /*!40000 ALTER TABLE `monster` DISABLE KEYS */; INSERT … INSERT … INSERT /*!40000 ALTER TABLE `monster` ENABLE KEYS */; UNLOCK TABLES; 但实际上,这些“注释”是有条件的MySql语句 这对我来说是个新闻,但好的,鉴于输出形式mysql --version对我来说一切正常: mysql Ver 14.14 Distrib 5.5.38, …

3
InnoDB导入性能
我在批量导入一个由大约1000万行(或7GB)组成的相当大的InnoDB表时遇到了麻烦(对我来说,这是迄今为止我使用过的最大表)。 我做了一些研究来提高Inno的导入速度,目前我的设置如下所示: /etc/mysql/my.cnf/ [...] innodb_buffer_pool_size = 7446915072 # ~90% of memory innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_io_capacity = 5000 innodb_thread_concurrency=0 innodb_doublewrite = 0 innodb_log_file_size = 1G log-bin = "" innodb_autoinc_lock_mode = 2 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit=2 innodb_buffer_pool_instances=8 import is done via bash script, here is the mysql code: SET …

1
在表上创建MySQL索引失败
更新:tl; dr:问题是MySQL TMPDIR在创建索引时使用。而我TMPDIR的磁盘空间不足。 原始问: 我正在尝试向InnoDB表添加索引,并获得一个table is full error。我有足够的磁盘空间,MySQL配置的文件表数量为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 …
10 mysql  innodb  index 

1
将Select语句放入事务中
这两个查询之间有什么区别: START TRANSACTION; SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; COMMIT; 而且没有交易: SELECT * FROM orders WHERE id=1; UPDATE orders SET username='John' WHERE id=1; 进行SELECT内部交易有什么影响? 如果在这两种情况DELETE FROM orders WHERE id=1之后都SELECT在另一个会话中被调用,它将在何时进行处理?


2
删除带有待处理事务的MySQL表
有没有办法删除MySQL中具有待处理事务的InnoDB表或数据库(最好在文件系统级别)? 发生了什么: 我使用MySQL 5.5.28并运行LOAD DATA INFILE…将一个巨大的数据集(300M行)导入InnoDB表。我以前没用过set autocommit = 0;。不幸的是,mysqld在导入过程中被阻止了。 当我重新启动时mysql,它将尝试回滚使用以下消息填充系统日志的事务: mysqld_safe [4433]:121212 16:58:52 InnoDB:等待1个活动事务完成 问题是回滚现在已经运行了25多个小时,在此期间 mysqld不接受任何套接字连接。 我不能只是删除/var/lib/mysql/*并从头开始,因为这台机器上还有其他一些InnoDB数据库/表。但是,有问题的表是单独数据库中的唯一表。删除整个表或整个数据库不是问题,因为之后我可以重新导入所有数据。

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.