这个问题就像我之前的问题的延续: 我是否正确InnoDb比MyISAM更频繁的并发更新和插入?
但这次我有具体的问题.
我们知道,当我们没有很多并发更新(插入)时,MyISAM比InnoDb更快.当我们有许多并发更新时,MyISAM表被锁定,所有其他客户端应该等待.
1)但是什么时候从MyISAM改为InnoDb?每秒更新1次?每秒10次更新?每秒100次更新?
2)对于一个具体的例子,最好是在我的网站上的一个表格中更改为InnoDb,我通常每分钟有几个更新(来自不同的会话),但有时它可以每秒2-3次更新?
在什么条件下应该使用InnoDB而不是MyISAM?我见过一些MySQL优化测试,其中MyISAM被证明更快.我的所有表都是MyISAM,为什么要切换到InnoDB?
数据库是带有MyISAM引擎的MySQL.
表定义:
CREATE TABLE IF NOT EXISTS matches (
id int(11) NOT NULL AUTO_INCREMENT,
game int(11) NOT NULL,
user int(11) NOT NULL,
opponent int(11) NOT NULL,
tournament int(11) NOT NULL,
score int(11) NOT NULL,
finish tinyint(4) NOT NULL,
PRIMARY KEY ( id ),
KEY game ( game ),
KEY user ( user ),
KEY i_gfu ( game , finish , user )
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3149047 ;
Run Code Online (Sandbox Code Playgroud)
我已设置索引,(game, finish, user)但此GROUP BY查询仍需要0.4 - 0.6秒才能运行:
SELECT user …Run Code Online (Sandbox Code Playgroud) 我对这个主题进行了一些搜索并找到了一些结果.但是,我正在寻找是否有人知道或可能指向一些真实或有信誉的案例研究,详细说明从MyISAM迁移到InnoDB的好处(特别是性能).
很好,如果你能指出任何关于MySQL版本5.5及以上,其中InnoDb作为默认存储引擎.
我的数据库目前正在使用InnoDB引擎.现在我想添加全文搜索功能,这就是我想将表格转换为MyISAM的原因.但这样做会破坏所有外键.如何安全地将我的表引擎更改为MyISAM?
将表格更改为MyISAM引擎后,如何使用SELECT ... JOIN?
ALTER TABLE jobs ENGINE = MyISAM;
Cannot delete or update a parent row: a foreign key constraint fails
Run Code Online (Sandbox Code Playgroud) 我插入一个简单的小表,有5个属性和1000行.
我观察发动机是INNODB时,每次插入需要0.03 - 0.05秒.我将引擎更改为MYISAM,然后插入更快.它需要0.001 - 0.003.
问题是什么.innodb_flush_log_trx_commit = 1默认情况下.我就是这样的设置.这是我的innodb设置.
innodb_log_buffer_size : 1MB
innodb_log_file_size : 5MB
innodb_buffer_pool_size: 8MB
innodb_flush_log_trx_commit = 1
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这有什么问题.提前致谢.问候,UDAY
我是MySQL数据库的新手.我一再看到MySQL的一个错误,说该表被标记为崩溃,应该修复.但是,我可以使用命令myisamchk修复崩溃的表.顺便说一句,我在MySQL中使用MYISAM数据库引擎.
我只是想知道在什么情况下数据库表崩溃以及如何防止它再次发生?
我使用mysqltcl库(3.0)从Tcl(8.5)脚本连接到MySQL(5.0)数据库.
我需要在MySQL DB(MyISAM表)中的一个表中添加一个新列,该表包含超过2000万行.
添加列的过程必须在运行时,我的意思是应用程序仍将运行,并且在更改表时仍将插入和选择行.
如何安全地完成此过程并且不会损害正在运行的应用程序?
我有这些小桌子,item并且category:
CREATE TABLE `item` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
`category_id` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `category_id` (`category_id`)
) CHARSET=utf8
CREATE TABLE `category` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
我插入了100个类别和1000个项目.
如果我运行这个:
EXPLAIN SELECT item.id,category.name AS category_name FROM item JOIN category ON item.category_id=category.id;
Run Code Online (Sandbox Code Playgroud)
然后,如果表的引擎是InnoDB我得到:
+----+-------------+----------+-------+---------------+-------------+---------+--------------------+------+-------------+
| id | select_type | table | type …Run Code Online (Sandbox Code Playgroud) 我试图了解MyISAM如何实际存储其记录以及在记录插入和记录删除后如何维护其结构.我看过以下链接:
我想确定我是否理解正确,如果不对,请纠正我.




再回顾一下这个问题
我想确定我是否理解正确,如果不对,请纠正我.
其他问题
myisam ×10
mysql ×10
innodb ×6
database ×3
performance ×2
alter-table ×1
architecture ×1
group-by ×1
indexing ×1
insert ×1
large-data ×1