Вопрос по MySQL C API

Тема в разделе "WASM.HEAP", создана пользователем _DEN_, 18 июн 2010.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Правильно ли я понимаю, что транзакция в MySQL C API делается следующим образом:

    Код (Text):
    1. MYSQL* c = mysql_init(0);
    2.  
    3. mysql_query(...); // Не транзакция
    4.  
    5. mysql_autocommit(connection, false); // Включаем "режим транзакции"
    6. mysql_query(...); // Начало транзакции
    7. mysql_query(...);
    8. mysql_query(...);
    9. mysql_commit(connection); // Коммит
    10. mysql_autocommit(connection, true); // Выключаем "режим транзакции"
    Меня смущает то, что похоже на то, что с выключенным autocommit каждый mysql_query все равно ходит на сервер, когда можно было бы подготовить все на клиенте и отправить во время mysql_commit.
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Ой, не там тему создал. Перенесите пожалуйста в HEAP.
     
  3. dfrsa

    dfrsa New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2010
    Сообщения:
    88
    http://ru.wikipedia.org/wiki/Commit_%28SQL%29
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    dfrsa

    Ты приведенный код пробовал исполнить через MySQL C API?
     
  5. dfrsa

    dfrsa New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2010
    Сообщения:
    88
    _DEN_
    Остальное зо деньги ;)
     
  6. semen

    semen New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    334
    Адрес:
    Russia
    Мускул вообще тормоз, замерял как-то скорость - получалось что mysql_init выполняется оочень долго, чтото около 0.012с. Постгре еще большим тормозом оказывался.
    Сам язык вообще можно парсить на клиенте, а портокол бинарным сделать, только большинство это не парит.
     
  7. Kuvaldum

    Kuvaldum New Member

    Публикаций:
    0
    Регистрация:
    4 сен 2005
    Сообщения:
    8
    Транзакционный механизм перпендикулярен количеству обращений к серверу.
    Транзакции обычно обрабатываться сервером, а не клиентом.
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    semen
    Какой кошмар, лол.

    Kuvaldum
    Понятное дело что сервером. Вопрос в том, как заставить клиент сформировать транзакцию полностью, прежде чем передать ее на сервер.
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _DEN_
    начнём с того существует несколько уровней изоляции транзакций.
    незнаю как в C API, но в java есть executeBatch()
     
  10. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    wsd

    Проблема именно в C API.
     
  11. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    _DEN_
    на счёт изоляции транзакций, я просто подумал, что ты хочеш избежать некоторых проблем паралельных тпанзакций пихая всё в один вызов.
    если изоляция не serializable то койчто всёравно словить можно.
    а ты не пробывал несколько команд запихнуть в один вызов mysql_query(...) объеденив их через сепаратор ";"