标签: myisam

MyISAM和InnoDB表在一个数据库中

我有一个包含大约30个表的数据库,其中5个表是写密集型的.

我在考虑

  1. 转换5个写密集型表以使用InnoDB引擎,并将其余部分保留在MyISAM引擎上

  2. 转换所有表以使用InnoDB引擎.

我想知道哪种方法更好?

更具体

我想在MyISAM引擎上保留一些表的原因是它们中的一些有大约1,000,000行.我不确定转换为InnoDB后这些表上的"SELECT COUNT(*)"查询会有多慢.

我没有做过测试.在开始转换之前,我更喜欢从你们这里得到一些建议.

mysql myisam innodb

8
推荐指数
1
解决办法
4186
查看次数

什么时候MyISAM比InnoDB好?

有时我被问到一些采访:InnoDB对MyISAM有什么好处,MyISAM比InnoDB好?关于问题的第一部分,一切都很清楚:InnoDB是交易兼容的,行级阻塞而不是表级阻塞,外键支持和其他一些,这些点只是浮现在脑海中.

但是当MyISAM真的比InnoDB好吗?

mysql myisam innodb

8
推荐指数
2
解决办法
9071
查看次数

使用Django将现有的MyISAM数据库转换为InnoDB

无论如何,我可以将一个完整填充的MyISAM数据库转换为InnoDB(以某种方式创建所有外键约束,就像我从头开始运行syncdb命令一样)?

mysql django myisam innodb

8
推荐指数
2
解决办法
4506
查看次数

MySQL数据库引擎:MyISAM用于information_schema,但InnoDB用于其他数据库

我目前正在为MySQL中的所有数据库使用InnoDB,但是我注意到我的information_schema数据库使用MyISAM来处理非MEMORY的表.

我正在调查InnoDB/MyISAM问题.虽然我不认为这是它的原因,但我担心这种混合.该数据库最初是使用MyISAM设置的.之后更新了my.cnf文件,将引擎重置为InnoDB.我正在使用MySQL 5.5.10.

将information_schema数据库设置为MyISAM可能会出现哪些问题,但是所有其他数据库都设置为MySQL?


对于那些寻求帮助的人: 如果您在寻找答案时遇到此问题或想要了解更多信息,请查看您的默认数据库引擎:

show variables;
Run Code Online (Sandbox Code Playgroud)

要查看分配给数据库中表的引擎:

show table status;
Run Code Online (Sandbox Code Playgroud)

我的my.cnf设置:

[client]
default-character-set=utf8

[mysqld]
log=/usr/local/var/mysql/mysqld.log
character-set-server = utf8
collation-server = utf8_general_ci
lower_case_table_names=2
default_storage_engine=InnoDB

# Performance hacks:
innodb_flush_method=nosync
innodb_flush_log_at_trx_commit=0
Run Code Online (Sandbox Code Playgroud)

mysql myisam innodb information-schema

8
推荐指数
1
解决办法
2282
查看次数

将MyISAM转换为InnoDB.有利?后果是什么?

我们正在运行一个社交网站,记录每个成员的行为(包括访问其他成员的页面); 这涉及到db的大量写入.这些操作存储在MyISAM表中,并且由于某些东西开始对CPU征税,我首先想到的是MyISAM的表锁定会对CPU造成这种压力.

  • 只有读取和写入,没有对此表的更新.我认为这个表的读写之间的平衡大约是50/50,因此InnoDB会是更好的选择吗?
  • 如果我想将表更改为InnoDB并且我们不使用外键约束,事务或全文索引 - 我是否需要担心什么?

mysql myisam innodb

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

外键与分区

由于目前分区的mySQL数据库不支持外键,我想听一些读取繁重的应用程序的专业版和内容,每个表将处理大约1-400 000行.不幸的是,我在这方面还没有足够的经验来自己做出结论......

非常感谢!

参考文献:

如何在分区时处理外键

分区具有外键的mySQL表?

mysql myisam innodb partitioning foreign-keys

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

将表类型从MyISAM更改为InnoDB

我想知道我是否将一些表从MyISAM转换为InnoDB,是否会导致数据损坏?

我需要将一些表转换为InnoDB,因此我可以使用事务,但它们持有非常重要的数据,因此我不确定是否应该进行转换.

mysql myisam innodb

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

Doctrine2 - 使用全文和MyIsam

我正在Symfony2中构建一个应用程序,使用Doctrine2和mysql.我想使用全文搜索.我找不到如何实现这一点 - 现在我仍然坚持如何将表引擎设置为myisam.

似乎无法使用注释设置表类型.另外,如果我通过运行"ALTER TABLE"查询手动完成,我不确定Doctrine2是否会继续正常工作 - 它是否依赖于InnoDB外键?

有没有更好的地方提出这些问题?

myisam full-text-search doctrine-orm

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

Mysql并发:如果访问锁定表会发生什么?

问题很简单,但我找不到一个确切的答案:在myisam数据库中,如果一个php文件锁定一个表(带有原子操作,比如一个INSERT),另一个php文件试图访问同一个表,会发生什么?读书还是写作?

现在,虽然很明显第二个会话将无法访问该表,但到底发生了什么?它会返回某种错误吗?在它能够访问之前它是否在队列中等待?

mysql concurrency myisam

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

MySQL,如何合并表重复条目

可能重复:
如何删除重复的行?
仅使用MySQL查询删除重复项?

我有一个大约14M条目的大桌子.表类型是MyISAM而不是InnoDB.

不幸的是,我在这个表中有一些重复的条目,我发现有以下请求:

SELECT device_serial, temp, tstamp, COUNT(*) c FROM up_logs GROUP BY device_serial, temp, tstamp HAVING c > 1
Run Code Online (Sandbox Code Playgroud)

为了避免将来出现这些重复,我想使用SQL请求将当前索引转换为唯一约束:

ALTER TABLE  up_logs DROP INDEX UK_UP_LOGS_TSTAMP_DEVICE_SERIAL,
ALTER TABLE up_logs ADD INDEX UK_UP_LOGS_TSTAMP_DEVICE_SERIAL (  `tstamp` ,  `device_serial` )
Run Code Online (Sandbox Code Playgroud)

但在此之前,我需要清理我的副本!

我的问题是:如何只保留一份重复条目?请记住,我的表包含14M条目,所以如果可能的话我想避免循环.

欢迎任何评论!

mysql sql myisam

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