Помошь в оптимизации баз данных

Zivas

Новичок
Помошь в оптимизации баз данных

Имеется сайт, обслуживающий организации, а именно ведущий схожую статистику по предприятиям, под каждое предприятие создается БД в ней 16 таблиц в каждой таблице может быть от 2 до 15 полей , преобладает высокое чтения данных по каждой организации, если быть точным количество "читатаелей" около 1000 на БД(организацию), интенсивность записи в 5 раз ниже, количество организаций уже стремится к 40, что создает проблему с хостингом т.к. баз столько же сколько предприятий, структуры БД для каждый организации идентичны, а вот данные в них разные, интересует как можно сократить количество БД при этом так чтобы это не повлияло на скорость и чтение из бд? тип движка БД innoDb
 

Zivas

Новичок
база каждого предприятия около 20 мб, вся база около 800
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
под каждое предприятие создается БД в ней 16 таблиц в каждой таблице может быть от 2 до 15 полей
Хранить все в одной бд религия не позволяет?

-~{}~ 07.04.10 14:14:

+ Explain в руки и вперед.
 

Fortop

Новичок
Не много.
Как интенсивно растет? Среднее число записей в таблицах? Какое число запросов в секунду?
Сколько в среднем выполняется запрос?

И собственно вопрос - в чем проблемы? В ограничении числа БД на хостинге?

Вариантов есть несколько.

а) нормализовать структуру. т.е. поскольку таблицы одинаковы, ввести в каждую дополнительное поле ID предприятия и создать еще одну таблицу собственно со списком этих предприятий.
б) перейти на собственный сервер

Но важно понимать, что при дальнейшем росте (а будет ли? а если будет, то с какой скоростью будет?) есть вероятность, что вам придется вернуться как раз к своей первоначальной архитектуре(той что есть сейчас), поскольку она масштабируется много проще :)
 

Zivas

Новичок
Спасибо, да проблема именно в ограничении количества баз.
На еще одном сайте была получена такая рекомендация:

"можно завести еще одну таблицу firm(id, name) со списком организаций. во все остальные 16 добавить форинкей на нее. добавить индекс на форинкей в каждую...

миграцию провести не сложно. база будет всего одна. заботится придется только о дисковых квотах."

Объясните, пожалуйста, смысл FOREIGN KEY , а то единственное, что по нему нашел это вот такое описание:

от SpravkaWeb.Ru
FOREIGN KEY и CHECK
- Введены для совместимости при переносе кода с других SQL-баз данных при запуске приложений, создающих таблицы со ссылками.
Фактически ничего не делают.

С индексами, объем базы увеличится где-то в 1.5 раза, зато на скорости это никак не скажется так ?
 

Fortop

Новичок
Вообще-то это
Zivas
"можно завести еще одну таблицу firm(id, name) со списком организаций. во все остальные 16 добавить форинкей на нее. добавить индекс на форинкей в каждую...
и это
Fortop
а) нормализовать структуру. т.е. поскольку таблицы одинаковы, ввести в каждую дополнительное поле ID предприятия и создать еще одну таблицу собственно со списком этих предприятий.
Одно и то же.


Zivas
Объясните, пожалуйста, смысл FOREIGN KEY
Контроль целостности данных.
Чтобы нельзя было удалить предприятие, если допустим еще есть невыполненные заказы в другой таблице. Тогда между собой связывают эти две таблицы и БД автоматически предотвращает попытки неправильного удаления.

Zivas
С индексами, объем базы увеличится где-то в 1.5 раза, зато на скорости это никак не скажется так ?
Сейчас индексов нет что ли вообще?
Правильные индексы на скорости сказываются крайне положительно.
Обычно в десятки раз увеличивая скорость выборок.
 

Zivas

Новичок
Спасибо за информацию, да индексы не использовались, сейчас будут))))
 
Сверху