|
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 14
|
|
ПOМОГИТЕ профи, оптимизация MySQL, есть ли выход???08.02.2011, 22:43. Показов 1644. Ответов 6
Метки нет (Все метки)
Существует сайт на котором есть
-чаты -гостевая и т.д. Во всех этих модулях используется база данных MySQL Везде запросы одинарные т.е. сверка с одной - двумя таблицами, и все работает быстро Но есть еще один модуль который производит сверку сразу по нескольким таблицам. Кода под рукой нет новыглядит это примерно так выбираю данные из таблицы 1 если есть найденные то ище данный по таблице 2 в интервале заданного времени времени т.е. в одном запрове идет проверка сразу по нескольким таблицам причем у таблиц нет индексов ну например таблица 1 url,ip,agent,datetime таблица 2 url,ip,agent,datetime в данном случе будет примерно такой запрос SELECT * FROM таблица 1 WHERE таблица 1.url = таблица 2.url AND и т.д. а вот например друго запрос SELECT * FROM таблица 1 WHERE url = (SELECT url FROM таблица 2 WHERE таблица 1.ip = таблица 2.ip AND таблица 1.agent = таблица 2.agent AND datetime > сегодняшняя дата - 5 дней) или например вот так SELECT * FROM таблица 1 WHERE url = (SELECT url FROM таблица 2 WHERE таблица 1.ip = таблица 2.ip AND таблица 1.agent = таблица 2.agent AND datetime > сегодняшняя дата - 5 дней) AND datetime > сегодняшняя дата - 5 дней AND url <> моей ссылки короче таких запросов там очень много в итоге при загрузки страницы сайта сайт виснет на 3 мин!!! и никто не может получить к нему доступ пока работа с базой данных не будет закончена т.е. если все это перевести в циклы то каждое значение из таблицы 1 сверяется со всеми значениями с таблицой 2 и т.д. а значений в таблице несколько тысяч!!! т.е. это цикл в цикле вопрос таков как мне подсчитать время выполнения каждого запроса чтото типа такого SELECT * FROM таблица 1 WHERE таблица 1.url = таблица 2.url AND и т.д. ---вывожу сколько времени шел запрос SELECT * FROM таблица 1 WHERE url = (SELECT url FROM таблица 2 WHERE таблица 1.ip = таблица 2.ip AND таблица 1.agent = таблица 2.agent AND datetime > сегодняшняя дата - 5 дней) ---вывожу сколько времени шел запрос и еще для чего нужны индексы? и как они могут тут чемто помочь? как такие запросы оптимизировать? этот модуль такой сложный чтобы предотвратить накрутку но грузилово слишком сильное и модуль работает в автоматическм режиме распределяя трафик в итоге на сайт иногда просто не попасть это ппц, а выхода из этой ситуации не вижу т.к. не упростить никак на хостинге мне сказали что покупка более мощьного сервера ни к чему не приведет и дали понять что все CMS работают быстро на любых хостингах и отправили оптимизировать
0
|
|
| 08.02.2011, 22:43 | |
|
Ответы с готовыми решениями:
6
Есть разовая работа - для профи ASP.NET Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация C++ и БД MySQL. Оптимизация проекта |
|
52 / 52 / 4
Регистрация: 10.11.2010
Сообщений: 171
|
|
| 09.02.2011, 09:24 | |
|
Насчет ключей могу сказать. Ключи ускоряют поиск по таблице. Ставятся на ту колонку, по которой будет производиться поиск. Как правило, это колонка с уникальными ID.
Для примера. Ты попросишь у меня книгу "Сборник стихов А.С.Пушкина", я тебя приведу в свою комнату и укажу на огромную кучу книг, лежащих в углу. Насколько быстро ты найдешь книгу, можно только догадываться. А если ты придешь за книгой в библиотеку, то там они упорядочены по какому-либо свойству (имени автора, названию). Чтобы найти любую книгу в библиотеке среди тысяч экземпляров, тебе понадобится не больше минуты. Но, думаю, если у тебя запросы обрабатываются по 3 минуты, индексы вряд ли сильно помогут. Нужно переделать, оптимизировать сами запросы, подумать о более удобной структуре БД.
0
|
|
|
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|||||||
| 09.02.2011, 17:35 | |||||||
1
|
|||||||
|
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 14
|
|||||||
| 11.02.2011, 01:21 [ТС] | |||||||
таблица userlist содержит 400 записей таблица visitors содержит более 100 000 записей КАК МОЖНО ИСПРАВТЬ? как переделать в JOIN???
0
|
|||||||
|
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
|||||||
| 11.02.2011, 19:25 | |||||||
`userlist`.`url` `userlist`.`status` `visitors`.`where` `visitors`.`datetime`
1
|
|||||||
|
0 / 0 / 0
Регистрация: 07.02.2011
Сообщений: 14
|
|||
| 13.02.2011, 01:17 [ТС] | |||
Как я понял он каким то образом объединяет таблицы, не могу понять только что такое LEFT JOIN и еще я почитал литературу и в ней сказано что индексы замедляют запросы типа UPDATE, это правда?
и какого они типа? "прошу прощения но я нуб "
0
|
|||
|
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
|
||||
| 13.02.2011, 08:52 | ||||
|
Обычный JOIN (от же INNER JOIN) `a` JOIN `b` ON условие_объединенияобъединяет каждую запись из таблицы `a` с каждой записью из таблицы `b`, если записи удовлетворяют условию_объединения (если оно указано). (Если условие_объединения отсутствует, то итого получается m*n записей - каждая с каждой). А вот LEFT JOIN действует немного иначе `a` LEFT JOIN `b` ON условие_объединенияв целом суть та же (изначально каждая с каждой), но если вдруг оказалось, что записи из таблицы `a` не нашлось ни одной записи из таблицы `b`, которая довлетворяет условию_объединения, то генерируется дополнительная запись с NULL у всех полей из `b`. Т.е. из `a` в любой случае будут извлечены все записи.
1
|
||||
| 13.02.2011, 08:52 | |
|
Помогаю со студенческими работами здесь
7
Mysql запрос оптимизация Оптимизация запросов mysql Оптимизация запроса MySQL Оптимизация mysql my.cnf Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|