2015-03-14 3 views
1

У меня есть проект OpenCart с около 50 000 продуктов в базе данных. Я переключил веб-хостинг с VPS на выделенный сервер, и я видел некоторые улучшения, но все же сайт лагги.Можно ли смешивать системы хранения в одной базе данных?

На VPS все таблицы были MyISAM с latin1_swedish_ci сопоставление на mysql 5.1.x.x. На новом сервере я переключился на TokuDB и MariaDB 10. Для некоторых таблиц мне пришлось отбросить индексы FULLTEXT, и я увидел некоторое снижение производительности (все таблицы теперь находятся на TokuDB).

Это разумное решение переключить некоторые таблицы обратно в MyISAM (только для использования индексов FULLTEXT)? У OpenCart есть несколько запросов, соединяющих множество таблиц ... если некоторые из них находятся на TokuDB, а некоторые из MyISAM - это штраф? Я смотрю только на производительность, ресурсы находятся на 2-м месте.

Большое спасибо!

+0

Да. Совершенно приемлемо, но это может быть истолковано как мнение. – Strawberry

+0

У каждого двигателя есть свои сильные и слабые стороны. Узнайте [о них] (http://stackoverflow.com/q/12614541/4265352) и выберите для каждой таблицы соответствующий механизм, зависящий от того, как таблица используется приложением. – axiac

+0

У InnoDB теперь есть FULLTEXT. И это, кажется, быстрее, чем FT в MyISAM. –

ответ

0

Его ОК, если вы знаете, что вы делаете и почему вы делаете это.

Различные двигатели используют память и дисковое хранилище очень по-разному. Для системы типа OLTP InnoDB обычно более разумна, чем MyISAM (вы проверяли конфликт перед тем, как попробовать другой движок?). Но любая память, которую вы добавляете в буферный пул (для улучшения производительности InnoDB) больше не доступна для VFS или буферов сортировки (что помогает производительности MyISAM).

Я действительно пытаюсь представить себе, как TokuDB делает любым смысле в качестве подложки для хранения для сайта электронной коммерции. Его все о получении более быстрой записи для вставок и обновлений, а также о низком уровне обслуживания на SSD - выбор производительности редко бывает лучше, чем другие.

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/

Смежные вопросы