Оптимизация базы данных MySQL

12
denis920
На сайте с 26.02.2009
Offline
152
723

Здравствуйте.

Есть самописный скрипт, он работает на php MySQL

Так вот, когда размер базы данных становиться более 20 мб, сайт начинает сильно подтормаживать.

По суди 20 мб это не так много для базы данных, есть сайта и с гигабайтными базами.

Вопрос, почему так происходит? Как можно оптимизировать работы базы данных?

По сути в базе большой размер имеет одна таблица, типа post в wordpress, может ее разбить на несколько таблиц. Но однако это не сильно изменит ситуацию ведь когда база будет скажем 40 мб, все вернется.

Подскажите в какую сторону смотреть?

LEOnidUKG
На сайте с 25.11.2006
Offline
1553
#1

Проставка индексов.

✅ Трастовых площадок под размещение статей и ссылок. Опыт 12 лет! ( https://searchengines.guru/ru/forum/675690 ) ⭐ Купить вечные трастовые ссылки для сайта ( https://getmanylinks.ru/?srh ) ⭐ Ускорение ваших сайтов (WP, Opencart и др.) + Настройка сервера ( https://searchengines.guru/ru/forum/997205 )
D
На сайте с 28.06.2008
Offline
980
#2

Смотрите какие запросы выполняет скрипт - потом в phpMyadmin сами выполняете эти запросы добавив в начало EXPLAIN и анализируете.

Как правильно заметил Леня - скорее всего нужно добавить индекс на поля по которым идет выборка.

20 мб это вообще ни о чем, на таких объемах я видел тормоза только когда вообще не было индексов (включая первичного).

denis920
На сайте с 26.02.2009
Offline
152
#3
Dram:
20 мб это вообще ни о чем, на таких объемах я видел тормоза только когда вообще не было индексов (включая первичного).

Насколько я понял, индексов нет вообще.

Подскажите, а простановка индексов отразиться на структуре базы? Я имею ввиду, придется наполнять сначала сайт?

Aisamiery
На сайте с 12.04.2015
Offline
206
#4
denis920:
придется наполнять сначала сайт?

нет не придётся

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
O
На сайте с 30.09.2019
Offline
18
#5

....................

denis920
На сайте с 26.02.2009
Offline
152
#6
onep:
WP сам расставляет индексы в таблицах при установке. Ни чего там трогать не нужно.

Что такое WP ?

D
На сайте с 28.06.2008
Offline
980
#7

WP - Вордпрес

Создание индексов не затрагивает данные. (ничего не сотрется)

O
На сайте с 30.09.2019
Offline
18
#8
denis920:
Что такое WP ?

Извините, к топу отношение не имеет. Я невнимательно прочитал. Советовали правильно, расставьте индексы.

При большом количестве записей запрос типа "SELECT COUNT(`id`)" тормозит в таблицах InnoDB. Если нет другого способа, можно сменить тип таблицы на MyISAM.

E
На сайте с 01.10.2017
Offline
27
#9

onep, это только в том случае, когда в запросе нет условия, т.е. когда определяется полное количество записей в таблице. В остальном "тормозит" точно так же. Кстати, полное количество записей можно кэшировать триггерами и использовать для выборки более "легкий" запрос, чем SELECT COUNT(*) ;)

ЗАцени домен (https://vk.com/zadomen)
D
На сайте с 18.12.2015
Offline
142
#10
onep:
можно сменить тип таблицы на MyISAM.

Не нужно вообще использовать в 2к20 MyISAM. А если тормозит SELECT COUNT(*), то надо подумать, нужно ли вообще вам точное количество строк, если да, то зачем? Для пагинации, или просто юзеру показать количество товаров в категории. Если для пагинации, то нужно юзать курсор и next-next пагинацию. Если для того, чтобы показать примерное количество строк в таблице, брать аппроксимизированные данные из таблицы information_schema.

Разработка и поддержка высоконагруженных проектов.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий