Правильно ли я понимаю, что транзакция в MySQL C API делается следующим образом: Код (Text): MYSQL* c = mysql_init(0); mysql_query(...); // Не транзакция mysql_autocommit(connection, false); // Включаем "режим транзакции" mysql_query(...); // Начало транзакции mysql_query(...); mysql_query(...); mysql_commit(connection); // Коммит mysql_autocommit(connection, true); // Выключаем "режим транзакции" Меня смущает то, что похоже на то, что с выключенным autocommit каждый mysql_query все равно ходит на сервер, когда можно было бы подготовить все на клиенте и отправить во время mysql_commit.
Мускул вообще тормоз, замерял как-то скорость - получалось что mysql_init выполняется оочень долго, чтото около 0.012с. Постгре еще большим тормозом оказывался. Сам язык вообще можно парсить на клиенте, а портокол бинарным сделать, только большинство это не парит.
Транзакционный механизм перпендикулярен количеству обращений к серверу. Транзакции обычно обрабатываться сервером, а не клиентом.
semen Какой кошмар, лол. Kuvaldum Понятное дело что сервером. Вопрос в том, как заставить клиент сформировать транзакцию полностью, прежде чем передать ее на сервер.
_DEN_ начнём с того существует несколько уровней изоляции транзакций. незнаю как в C API, но в java есть executeBatch()
_DEN_ на счёт изоляции транзакций, я просто подумал, что ты хочеш избежать некоторых проблем паралельных тпанзакций пихая всё в один вызов. если изоляция не serializable то койчто всёравно словить можно. а ты не пробывал несколько команд запихнуть в один вызов mysql_query(...) объеденив их через сепаратор ";"