我正在布置我的桌子结构,并试图对如何设置存储引擎进行一个经过良好教育的猜测。
表的第一个字段是带有AUTO INCREMENT的整数类型的。字段2到5将是大约95%的读取,5%的写入(写入仅为INSERT)。但是,字段6将不断更新,大约50%的读取(SELECT语句)和50%的写入(10% INSERT 90% UPDATE)。
我刚刚读到,如果没有从表MyISAM中删除的条目,您可以自由地混合并发插入和选择MyISAM表的语句,而不需要锁。我从来不打算从表中删除任何行。
你建议我把这张桌子分成两张不同的桌子。第一个表是MYISAM,从上面的字段1到5 (95%读,5%写)。第二个表将是无害的,有两个字段,第一个字段是与第一个表中的第一个字段相同的AUTO INCREMENT,第二个字段是一个不断更新的字段(50%读50%写)?
不同表中的两个insert语句应该一个接一个地出现。但是,在第一个INSERT语句通过但第二个INSERT语句不通过的情况下,我如何强制每个表的第一个字段被正确地映射到彼此之间?
发布于 2012-02-17 19:43:43
如果MyISAM表有多个VARCHAR字段,则为you may want to convert the table's row format to FIXED。这可以将MyISAM表及其索引文件放大80%至100%,但在不更改任何其他内容的情况下,查询性能将提高20%至30%。
只要这些表是以相互排斥的方式使用(没有联接),您就应该没事。为什么InnoDB和MyISAM之间没有连接?每个执行联接的查询都不能混合使用InnoDB和MyISAM,否则每个SELECT查询都会随着MyISAM表和InnoDB表的完整表锁而恶化。
以下是我做的其他一些文章,它们充分说明了InnoDB与MyISAM之间的关系
https://stackoverflow.com/questions/9332881
复制相似问题