Dragokas
Добрая душа
- Сообщения
- 229
- Реакции
- 213
К слову о поточных операциях с базой данных (в формате вопрос-ответ)
Спасибо за предоставление инфы Kruzya.
Существуют только:
Не все из них.
Некоторые из функций методмапа Database всё ещё указывают на старые не-поточные функции в данный момент.
Пример: Database.SetCharset() - это просто алиас SQL_SetCharset, см. исходник.
Но есть и некоторые исключения.
Например: Database.Escape() - даже несмотря на то, что согласно исходнику, он обращается к хендлу БД, при этом внешний запрос не выполняется. Вместо этого, экранирование выполняет сам клиент, основываясь на предварительно за-кешированной кодировке соединения.
Дополнительную инфу можно получить в этом руководстве от R1KO.
А также будет полезным почитать там комментарии.
Спасибо за предоставление инфы Kruzya.
Там нет так называемых много-поточных функций.aleeexxx написал(а):Можете ли вы добавить советы о много-поточных функциях для SQL
Существуют только:
- не-поточные - выполняются в том же потоке, что и плагины SM, таким образом каждый запрос к БД приводит к ожиданию ответа и остановке выполнения операций в других плагинах на протяжении этого времени.
- поточные - эти выполняют запросы к БД в другом, втором потоке; когда вы выполняете ещё один запрос параллельно, новые потоки больше не создаются, запрос становится в очередь в тот же самый второй поток.
aleeexxx написал(а):Я только недавно узнал, что старые функции могут блокировать основной поток, а новый синтаксис уже выполняет в много-поточной манере.
Поправьте меня, если я не прав!
Не все из них.
Некоторые из функций методмапа Database всё ещё указывают на старые не-поточные функции в данный момент.
Пример: Database.SetCharset() - это просто алиас SQL_SetCharset, см. исходник.
Но есть и некоторые исключения.
Например: Database.Escape() - даже несмотря на то, что согласно исходнику, он обращается к хендлу БД, при этом внешний запрос не выполняется. Вместо этого, экранирование выполняет сам клиент, основываясь на предварительно за-кешированной кодировке соединения.
Дополнительную инфу можно получить в этом руководстве от R1KO.
А также будет полезным почитать там комментарии.
Последнее редактирование: