5.3. К вопросу производительности DataparkSearch

Способ хранения cache - самый быстрый в DataparkSearch. Используйте его, если хотите получить максимальную скорость поиска.

Если после окончания индексирования содержимое вашей директории /var не изменяется, вы можете выключить блокировку файлов при открытиии используя команду "ColdVar yes" в файле search.htm (или в файле searchd.conf, если используется searchd). Это позволит вам сэкономить некоторое время, затрачиваемое на блокировку файлов.

5.3.1. Рекомендация использовать searchd

Если вы планируете использовать синонимы, стоп-слова или данные ispell, рекомендуется воспользоваться демоном searchd (См. Разд. 5.4>). Демон searchd при запуске загружает эти данные и держит их в памяти. Это позволяет сократить среднее время выполнения запросов на поиск.

Таже searchd может загружать предварительно в память некоторые данные об URL (по 20 байт на каждую проиндекированую страницу) и лимиты cache mode (4 или 8 байт на каждый URL в зависимости от типа лимита). Это позволяет сократить среднее время обработки запроса.

5.3.2. Кэширование результатов поиска

Используйте команду "Cache yes" в вашем поисковом шаблоне search.htm (или в файле конфигурации searchd.conf, если используется searchd) для включения кэша результатов поиска. Это позволит значительно сократить время поиска при повторных запросах.

Если вы используете кэширование результатов поиска, пожалуйста, не забудьте очищать директорию var/cache после каждого сеанса индексирования/переиндексирования.

5.3.3. Рекомендация использовать файловую систему в памяти (mfs)

Если вы планируете использовать cache mode и имеете достаточно оперативной памяти на вашем компьютере, вы можете разместить директорию /usr/local/dpsearch/var на файловой системе в памяти компьютера (mfs). Это ускорит как индексирование, так и поиск.

Если памяти недостаточно, что поместить в ней /usr/local/dpsearch/var целиком, вы можете разместить на mfs любую из директорий /usr/local/dpsearch/var/tree, /usr/local/dpsearch/var/url или /usr/local/dpsearch/var/store.

5.3.4. Команда URLInfoSQL

Для способа хранения cache вы можете использовать команду URLInfoSQL no для выключения сохранения информации об URL в SQL-базе. Однако использовав эту команду, вы потеряете возможность использовать лимиты по языку и типу документов.

5.3.5. Команда SRVInfoSQL

При помощи команды SRVInfoSQL no вы можете выключить запись вспомогательной информации в SQL-таблицу "srvinfo". В этом случае содержимое таблицы не может быть использовано для загрузки конфигурации командой LoadServerTable (См. Разд. 3.8.1>).

5.3.6. Команда MarkForIndex

По умолчанию, DataparkSearch помечает все URL, отбираемые к индексированию, как ожидающие индексирования через 4 часа. Это позволяет избежать возможного одновременного индексирования одно и того же URL двумя параллельно запущеными копиями indexer. Однако для больших поисковых баз эта операция пометки может занять некоторое время. Вы можете выключить такую пометку используя команду "MarkForIndex no" в вашем файле конфигурации indexer.conf.

5.3.7. Команда CheckInsertSQL

По умолчанию, DataparkSearch пытается добавлять данные в SQL-базу вне зависимости, есть она уже там или нет. На некоторых системах, это может вызывать дополнительную обработку сообщений об ошибках. Чтобы избежать появления таких ошибок, вы можете добавить команду CheckInsertSQL yes в ваш файл конфигурации indexer.conf.

5.3.8. Производительность MySQL

Пользователи MySQL могут задать опцию DELAY_KEY_WRITE=1 для таблиц DataparkSearch. Это позволит быстрее обновлять индексы, т.к.они не будут записываться на диск пока файл не будет закрыт. DELAY_KEY_WRITE целиком исключает обновление индексов на диске.

С этой опцией индексы хранятся только в памяти и записываются на диск в последнюю очередь, по команду FLUSH TABLES или по завершению mysqld. Запись обновлённых индексов на диск может занимать минуты и нетерпеливые пользователи могут прибить сервер командой kill -9 и этим разрушить индексные файлы. Другим неудобством является необходимость запуска myisamchk для этих таблиц перед стартом mysqld для проверки, на случай, если mysqld был убит до этого.

По этим причинам мы не включили эту опцию в структуру наших таблиц по умолчанию. Т.к. вся информация в индексах может быть восстановлена из данных, находящихся в таблицах, вы не потеряете данные, используя опцию DELAY_KEY_WRITE. Но используйте её на свой страх и риск.

5.3.9. Библиотека асинхронного резолвера

Использование c-ares, библиотеки асинхронного резолвера (dns/c-ares в коллекции портов FreeBSD), позволяет для каждой индексирующей нити выполнять запросы к DNS без блокировки. Пожалуйста учтите, это также повышает число одновременных запросов к вашему DNS серверу.