SQL - Модуль для работы с SQL базами данных

Делитесь модулями
  • @GhostZ Хочу использовать бд в асинхронной функции, есть какой то способ чтобы каждый раз не настраивать подключение на отдельный поток, а один раз открыть для всего скрипта? Иначе слишком часто создаются новые подключения

  • @marikos, можно сделать одно соединение для нескольких потоков установив одинаковый id, выполнив код _SQL_CONFIG.id = 'id'. Но это может вызвать неожиданные ошибки и другие проблемы, так как такая работа не тестировалась.

    Настройку соединения всё равно придётся выполнять в каждом потоке (Её можно вынести в функцию), но соединение будет одно.

  • @GhostZ , проблема не в кубике настройки соединения, а в том что асинхронная функция вызывается в цикле по списку, т.е этих потоков может быть 100+ . Открытие нового соединения ведь нагружает систему или я ошибаюсь ? Хочется понять как оптимизировать работу с базой, когда потоки часто пересоздаются

  • @marikos, выше я написал решение, нужно изменить _SQL_CONFIG.id

  • @GhostZ , не совсем понимаю как это использовать? Изменить в коде модуля ? или конкретно в выполнить запрос добавлять ?
    Спасибо

  • @marikos, @GhostZ said in SQL - Модуль для работы с SQL базами данных:

    выполнив код _SQL_CONFIG.id = 'id'

    В тех потоках где нужно одно соединение укажите одинаковый id

  • @GhostZ , я понимаю что указать одинаковый айди, но для начала мне этот айди нужно создать и настроить с ним соединение , разве нет?
    Нигде в действиях не вижу полей с указанием айди соединения

  • @marikos, вам просто нужно выполнить этот код до начала работы с базой данных, в каждом потоке где нужно одно соединение.

  • @GhostZ
    Т.е :
    1 поток :
    а)выполнить код
    б)настроить соединение
    асинхрон потоки :
    а)выполнить код
    б)Добавить запись

    Верно?

  • @marikos, если вы не работаете с базой в потоке 1, то выполнять этот код и настраивать соединение там не нужно.

    Выполнять этот код и настройку соединения нужно в каждом потоке, в котором производится работа с базой, так как настройки соединения работают в рамках одного потока. Порядок выполнения кода и настройки соединения не важен, главное выполнить их до работы с базой.

  • @GhostZ , понятно, спасибо. Т.е этот метод просто позволит не создавать отдельных соединений, чтобы не нагружать ими бд, но в скрипте каждый поток так и будет настраивать соединение, только не новое?

    Это облегчит работу скрипта? Или я вообще делаю бесполезное действие, пытаясь избежать настройки соединения в каждом потоке и это не влияет на скрипт?

  • @marikos said in SQL - Модуль для работы с SQL базами данных:

    @GhostZ , понятно, спасибо. Т.е этот метод просто позволит не создавать отдельных соединений, чтобы не нагружать ими бд, но в скрипте каждый поток так и будет настраивать соединение, только не новое?

    Да

    @marikos said in SQL - Модуль для работы с SQL базами данных:

    Это облегчит работу скрипта? Или я вообще делаю бесполезное действие, пытаясь избежать настройки соединения в каждом потоке и это не влияет на скрипт?

    Да. А отсутствие выполнения настройки соединения практически ничего не дало бы, так как оно ничего не делает кроме сохранения настроек

  • @GhostZ , теперь все понятно, спасибо большое. Буду пробовать)

  • @GhostZ , здравствуйте, пару вопросов.

    1. Могу ли я как-то отправлять запросы к удаленной БД через прокси?
    2. Можно ли сделать "Закрыть соединение" для отдельных баз. Т.е. в процессе скрипта я использую и локальную бд и удаленную. Но при работе в многопотоке удаленная бд начинает ругаться, что я часто открываю и закрываю соединение.