LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование

Ищем:

https://st0.сайт.ru/media/catalog/product/cache/1/image/602f0fa2c1f0d1ba5e241f914e856ff9/.*?/.*?/(.*?)\?

На

$1

Сережка:

И мой знакомый рассказывал, что у него на сайте была база innoDB, и начало кончатся место. Оказывается в табличке было пару записей, а занимала пару гиг. Он ее перевел в MyISAM и она сразу в несколько сот раз уменьшилась.

Ну наверное что-то ваш знакомый не понимал, что перед ним.

Если преобладают операции чтения (SELECT) работает быстрее в MyISAM.

В общем плане работы т.е. комплексной это не так. Долго объяснять. Mysql отказывается от myisam не просто так.

На данный момент самая большая таблица с ссылками занимает 4,3гб, так буфер ставить в 5гб?

Если на сервере достаточно памяти, то да выставлять 5 ГБ

Anderew:
На торгах имущества банкротов обратите внимание, там люди за копейки целые здания покупать умудряются. Главное помнить - прибыль прямопропорциональна рискам.

Всё самое вкусное уже разбирают ДО торгов, остаётся неликвид или УГ. Да ещё и пробиться надо на такие торги.

Если делаю запись, блокирую таблицу на WRITE, а иначе READ

Это не имеет смысла. Уберите их.

Переведите всё в innodb, выставите innodb_buffer_pool_size в размер чуть больше ваших таблиц, если они будут пополнятся.

Далее обязательно:

innodb_flush_method=O_DIRECT

и учитывая, что у вас локальные данные, то:

innodb_flush_log_at_trx_commit=0

Кэш лимиты оптимальные, больше не нужно:

query_cache_limit=2M

query_cache_size=128M

query_cache_type=1

И ещё раз проверьте индексы, также индексы могут быть составными и должны быть, если выборка идёт по 2-м и более параметрам.

Хотя очень хорошо, что Вы все даете советы не только на конкретный вопрос, а ищите пути решения глобально, не ожидал.

Это как лечение зубов. Если пациент жалуется, что зуб реагирует на холодное/горячее, то тут или зубную пасту надо менять или зуб сгнил и надо ставить имплантант вместо него. Поэтому надо рассматривать сначала зуб, а потом уже выбирать зубную пасту :)

Я ставил индексы во время SELECT и проверял скорость работы, если индекс ничего не давал, я его убирал.

Ничего не давал т.к. запросы в кэше были. Вы кэш очищали, отключали перед тестами?

Если вы делаете выборку по каким-то полям, у вас обязательно должны быть на них индексы.

На SELECT по моему блокировка не влияла

Это если вы блокировку сделали только на запись. Вы же сами пишете, что блокируете таблицу полностью.

Вы там нахимичили себе на голову всякого, а теперь спрашиваете, что с этим делать. Делать всё по нормальному надо, и блокировка таблицы нужна в ОЧЕНЬ крайних случаях, ну просто в ОЧЕНЬ.

Почему не innodb, и там блокировка по строкам идёт автоматическая. Также можно задать максимальное количество памяти для таблиц и всё будет в памяти работать быстро и легко.

Также сброс кэша можно уменьшить через настройки.

Без индексов select работает очень медленно, на это и приоритет.

Не понял эту фразу. Вы проверяли работу всех индексов?

Также медленно у вас работает чтение или запись без блокировки?

Сережка:
Читал в интернете, что это позволяет ускорить запись в БД, так как база в это время не используется. И скрипт действительно быстрее работал.

эм... у вас какой тип базы данных? Индексы корректно проставлены?

У вас какие основные операции записи или чтение?

Какая версия mysql?

Всё очень просто. Вы просто с блокировкой не разобрались.

Объясните нам, зачем вы блокируете таблицу?

Также в mysql есть блокировка общая (чтение/запись), есть блокировка частичная отдельно на чтение и на запись.

Если вы что-то пишите важное, то сделайте блокировку на запись, чтобы чтение производилось без проблем.

загружайте всё на сервер и дайте доступ на тест.

Всего: 31516