• Checkpoints are occurring too frequently?

    Melkij
    @Melkij
    PostgreSQL DBA
    Предупреждение выводит настройка checkpoint_warning. Говорит о том, что вы создаёте так много wal, что срабатывают чекпойнты чаще величины этого варнинга. Это именно совет базы посмотреть внимательнее на конфигурацию и workload.

    Выяснить, чем именно вы генерируете wal и, возможно, переосмыслить этот процесс. Смотрите, что у вас обычно работает в то время, когда срабатывают эти предупреждения. Какие-то массовые импорты данных, ещё что, пишущее много данных.
    Возможно, вам нужно увеличить свой max_wal_size ещё дальше. Но учитывайте, что чем больше wal между чекпойнтами - тем дольше будет стартовать база после аварийного выключения, т.к. должна накатить все wal от последнего чекпойнта.
    Это tradeoff между временем старта база при аварии и количеством IO при нормальной работе. Чекпойнт - это довольно много IO.

    PS: спросите у базы "show max_wal_size;" точно ли настройка применена.
    Ответ написан
    3 комментария
  • Портировать алгоритм сравнений строк с PHP на C/C++?

    zizop
    @zizop
    Если вам необходим более быстрый алгоритм поиска подстрок (ну и как следствие — сравнение строк), вы можете попробовать PHP расширение, написанное на C — Fast String Search. В неё используется алгоритм Комменца-Вальтера по аналогии с автоматом Ахо-Корасик, является модификацией алгоритма БМ для множества паттернов.

    Может быть такой вариант вам подойдёт. Если же нет — пишите в личку, у меня где-то было исчерпывающее руководство по созданию Hello World расширения для PHP на C, с созданием своей функции, в которую можно впихнуть ваш алгоритм.
    Ответ написан
    2 комментария