
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
26.11.2015, 22:57:44
|
|||
|---|---|---|---|
|
|||
Ускорение работы с тяжелой БД |
|||
|
#18+
Добрый день! Имеется MySQL, работающая на DENWER на локальной машине 64bit, 8Гб оперативки. База заполняется текстовыми записями большого размера (по несколько страниц). В настоящее время база имеет 113 тыс. записей (в итоге должно быть 8 млн), размер файла базы уже составляет 4,3 Гб. Сильно упала скорость записи. При входе через PHPMyAdmin страницы таблицы даже перелистываются (SELECT) по 1,5 минуты... Как правильнее исправить данную ситуацию? DENWER пихает все имеющиеся на localhoste базы в один файл ibdata1, может быть, можно настроить создание дополнительных фалов с базами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.11.2015, 23:46:45
|
|||
|---|---|---|---|
Ускорение работы с тяжелой БД |
|||
|
#18+
Ну судя по тому, что у вас файл называется ibdata1 таблица у вас на движке InnoDB. А эта зараза поднимает в buffer pool вообще всё что читает, включая ваши огромные TEXT поля. В сухом остатке - постоянное дрочево диска. PHPMyAdmin тормозит именно поэтому, т.к. там запрос к таблице по-умолчанию идёт SELECT * и он вынужден переваривать при каждом перелистывании очередные несколько сотен мегабайт данных. Попробуйте сами не просто открыть таблицу, а написать селект без вашего большого поля - этот селект должен листаться без проблем. Для начала стоит однозначно посмотреть настройки InnoDB (innodb_buffer_pool_size) по умолчанию он имеет совсем какие-то смешные настройки (8 Мб что-ли). Попробуйте выставить его хотя бы пару гигов, а лучше пять (это больше размера всей вашей базы, при оперативе 8 Гб - должно прокатить). Потом стоит посмотреть на запросы, которые идут от приложения к этой таблице. Везде где возможно исключить TEXT поле из запросов (то есть избавиться от запросов вида SELECT * FROM table). Если текстовое поле у вас одно - возможно стоит выделить его в отдельную таблицу, сослав ее на основную таблицу по ключу. Тогда запросы к базовой таблице у вас сильно ускорятся. Как крайний вариант - возможно стоит рассмотреть вообще вынос хранения больших документов в файловую систему, а в БД хранить только ссылки. Тут конечно возникает вопрос индексации и необходимости поиска по этим документам. А вообще, конечно, без более подробного знания о специфике приложения - всё это похоже на "лечение по фотогграфии" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2015, 00:15:25
|
|||
|---|---|---|---|
Ускорение работы с тяжелой БД |
|||
|
#18+
Staspostможет быть, можно настроить создание дополнительных фалов с базами? innodb_file_per_table включена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2015, 00:47:20
|
|||
|---|---|---|---|
Ускорение работы с тяжелой БД |
|||
|
#18+
miksoftStaspostможет быть, можно настроить создание дополнительных фалов с базами? innodb_file_per_table включена? А на кой она нужна ему ? Она и вообще-то не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2015, 00:51:27
|
|||
|---|---|---|---|
Ускорение работы с тяжелой БД |
|||
|
#18+
anvanoНу судя по тому, что у вас файл называется ibdata1 таблица у вас на движке InnoDB. А эта зараза поднимает в buffer pool вообще всё что читает, включая ваши огромные TEXT поля. А куда же ей ещё-то поднимать данные, как ни в бафер пул ? anvanoВ сухом остатке - постоянное дрочево диска. СУБД вообще всегда -- дрочево диска. Такой класс систем. anvanoPHPMyAdmin тормозит именно поэтому, т.к. там запрос к таблице по-умолчанию идёт SELECT * и он вынужден переваривать при каждом перелистывании очередные несколько сотен мегабайт данных. Попробуйте сами не просто открыть таблицу, а написать селект без вашего большого поля - этот селект должен листаться без проблем. А вообще, что за цель такая -- "листание без проблем". Ну, даже, допустим, есть у вас проблемы с листанием, что с того плохого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.11.2015, 12:51:16
|
|||
|---|---|---|---|
Ускорение работы с тяжелой БД |
|||
|
#18+
авторКак правильнее исправить данную ситуацию? DENWER пихает все имеющиеся на localhoste базы в один файл ibdata1, может быть, можно настроить создание дополнительных фалов с базами? включить посмотреть slow log посмотреть expalin включить innodb_file_per_table настроить буфер пул побольше. для ускорения insert настроить innodb_flush_log_at_trx_commit = 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1832447]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 317ms |

| 0 / 0 |
