2010-03-10 4 views
1

У нас есть таблица в mysql 18GB, в которой есть столбец «html_view», в котором хранятся исходные HTML-данные, которые мы показываем на странице, но теперь он занимает слишком много времени для извлечения html-данных из столбца «html_view», что делает загрузка страницы медленная.Чтение HTML-данных из базы данных происходит медленно? Нужен лучший подход?

Нам нужен подход, который упростит нашу существующую структуру, чтобы быстрее загрузить данные html с db или любым другим способом.

Одной из идей, которую мы планируем, является хранение данных HTML в файлах .txt, а в db мы просто сохраним путь к txt-файлу и будем извлекать данные из этого конкретного файла, читая файл. Но мы опасаемся, что он сделает обширные операции чтения записей на нашем сервере и может замедлить работу сервера.

Есть ли лучший подход, чтобы сделать эту ситуацию быстрее?

+0

Какое приложение/веб-сервер вы используете? Я думаю, вы должны изучить возможности кэширования этих компонентов, так что есть большая вероятность получить данные из памяти. – weismat

+0

Мы используем «Apache/PHP/MYSQL» в качестве веб-платформы? есть ли что-нибудь, что мы можем сделать, пожалуйста, поделитесь любым примером или статьей. Спасибо – Prashant

ответ

2

Прежде всего, зачем хранить HTML в базе данных? Почему бы не сделать это по требованию?

Для больших текстовых таблиц вы можете хранить сжатый текст в байтовом массиве или сжатый и закодированный в base64 в виде обычного текста.

Когда у вас есть массив с большим текстовым столбцом, сколько других столбцов имеет таблица? Если его не так уж много, вы можете разбить таблицу и создать хранилище значений по два столбца. Это должно быть быстрее и проще, чем чтение файлов с диска.

+0

Наша старая структура основана на хранении HTML в базе данных, поэтому ее невозможно изменить так рано, поэтому мы планируем внести несколько меньших изменений, которые могут улучшить производительность на данный момент. Из «хранения сжатого текста в байтовом массиве» или «сжатого и закодированного в base64 как обычный текст», который будет быстрее и как реализовать это, не могли бы вы поделиться с любым примером PHP? – Prashant

+1

Я не знаю PHP, но это может помочь: http://php.net/manual/en/ref.zip.php. Байт-массив будет проще, меньше и быстрее, чем base64. –

1

Посмотрите на Apache Caching guide.
Это объясняет кэширование диска и памяти - из моего pov, если содержимое статично (как указывает таблица данных), вы должны использовать возможности Apaches вместо того, чтобы писать свои собственные более медленные механизмы, потому что вы добавляете несколько слоев сверху.
Обычная мера вместо оценки все еще применяется, хотя ;-).

Смежные вопросы