可以在同一个数据库中混合使用存储引擎吗?

时间:2015-03-14 16:48:35

标签: mysql opencart collation mariadb storage-engines

我有一个OpenCart项目,数据库中有大约50,000个产品。我已经将网络托管从VPS切换到专用服务器,我看到了一些改进,但网站仍然是滞后的。

在VPS上,所有表格都是MyISAM,并在mysql latin1_swedish_ci上进行了5.1.x.x整理。在新服务器上,我已切换到TokuDBMariaDB 10。对于某些表,我不得不删除FULLTEXT索引,并且我看到性能下降(所有表现在都在TokuDB上)。

将一些表格切换回MyISAM(仅使用FULLTEXT索引)是否明智? OpenCart有一些查询加入了很多表...如果有些是在TokuDB上,有些是在MyISAM上有惩罚吗?我只是寻求表现,资源排在第二位。

非常感谢!

2 个答案:

答案 0 :(得分:1)

我认为这是正确的,我在数据库中混合存储引擎,数据库的速度是正确的。

无论如何,如果你使用opencart和很多产品(50,000),我建议你在(全部)表上创建索引,如果你这样做,你可以提高你的速度。

我做了以下事情:

    #Tabla category campo parent_id
CREATE INDEX i_parent_id ON category (parent_id);

#Tabla category_description campo language_id
CREATE INDEX i_category_description ON category_description (language_id);

#Tabla category_path campos path_id y level
CREATE INDEX i_category_path ON category_path (path_id,level);

#Tabla category_to_store campo store_id
CREATE INDEX i_category_to_store ON category_to_store (store_id);

#Tabla manufacturer_to_store campo store_id
CREATE INDEX i_manufacturer_to_store ON manufacturer_to_store (store_id);

#Tabla product campos manufacturer_id, date_added, date_modified
CREATE INDEX i_product ON product (manufacturer_id, date_added, date_modified);

#Tabla product campos model, sku, upc, ean,(como veis donde tengais la referencia etc) y con tipo FULLTEXT (si el campo es de caracteres no de números)
CREATE FULLTEXT INDEX i_product_fulltext ON product (model, sku, upc, ean);

#Tabla product_description campo language_id
CREATE INDEX i_product_description ON product_description (language_id);

#Tabla product_to_category campo category_id
CREATE INDEX i_product_to_category ON product_to_category (category_id);

#Tabla product_to_store campo store_id
CREATE INDEX i_product_to_store ON product_to_store (store_id);

#Tabla setting campo store_id, serialized
CREATE INDEX i_setting ON setting (store_id, serialized);

#Tabla url_alias campo query con tipo FULLTEXT
CREATE FULLTEXT INDEX i_url_alias ON url_alias (query);# 6936 filas afectadas.

#Tabla zone campo country_id
CREATE INDEX i_zone ON zone (country_id);

#Tabla zone campo name y code con tipo FULLTEXT
CREATE FULLTEXT INDEX i_zone_fulltext ON zone (name,code);

您必须在表格上加上“前缀”。

这样的事情: http://www.codigojavaoracle.com/desarrollo-web/mejorar-la-velocidad-en-opencart/

答案 1 :(得分:0)

如果您知道自己在做什么以及为什么要这样做,那就没关系。

不同的引擎使用内存和磁盘存储的方式截然不同。对于OLTP类型的系统,InnoDB通常比MyISAM更明智(你在尝试不同的引擎之前检查了争用吗?)。但是,您添加到缓冲池的任何内存(以提高InnoDB性能)都不再可用于VFS或排序缓冲区(帮助MyISAM性能)。

我真的很难想象TokuDB如何将任何感觉作为电子商务网站的存储基板。其所有关于为插入和更新获得更快的写入,以及对SSD的低维护 - 选择性能很少比其他引擎更好。