The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
SQL C API, !*! Igor, 06-Авг-01, 17:04  [смотреть все]
Hello!

Проблема: потребовалось записывать в SQL базу (сервер MySQL) данные. "Пикантность" в том, что строк _очень_ много, и хотелось бы добиться оптимизации этого процесса. Из описания MySQL C API можно выйти на два вызова mysql_query и real_query. Там же указано, что можно передавать только один sql statement за один вызов. Т.е.,
"select ...; select ...;" не пройдет... да и ';' использовать не надо ("нельзя"?), если присмотреться к тому же описанию.

Делать по одному SQL оператору за вызов мне кажется расточительным -- парсинг строки, ее интерпретация и пр. пр. пр. сотни миллионов раз...

Ваши идеи?
p.s. Я не знаком с Postgresql C API, и, в принципе, не очень "привязан" к MySQL. Если будет алтернативный SQL сервер под UNIX, решающий эту проблему, то это и будет решением.
Спасибо!

  • RE: SQL C API, !*! Dim, 01:03 , 08-Авг-01 (1)
    >Проблема: потребовалось записывать в SQL базу
    >(сервер MySQL) данные. "Пикантность" в
    >том, что строк _очень_ много,

    а почему бы тебе не использовать "COPY ... FROM ... file" или скармливать через пайп в "COPY...FROM...STDIN" ?


    • RE: SQL C API, !*! Igor, 09:18 , 08-Авг-01 (2)
      >>Проблема: потребовалось записывать в SQL базу
      >>(сервер MySQL) данные. "Пикантность" в
      >>том, что строк _очень_ много,
      >
      >а почему бы тебе не использовать
      >"COPY ... FROM ... file"

      В MySQL нет никакого COPY (Есть LOAD)

      Кроме того, файл предварительно обрабатывается,
      а делать второй файл (обработанный) крайне неудачная идея -- данных, как я уже сказал, очень
      много.

      >или скармливать через пайп в
      >"COPY...FROM...STDIN" ?

      опять же нет такого syntax и кроме прочего,
      какая большая разница между этим, и real_query?
      подозреваю что из STDIN было бы по кр. мере не быстрее, а скорее всего даже медленнее, поскольку
      он сам работает через C API.

      впрочем, спасибо за желание помочь.

      • RE: SQL C API, !*! Dim, 13:19 , 08-Авг-01 (3)
        >В MySQL нет никакого COPY (Есть
        >LOAD)

        Я использую PostgreSQL.

        >какая большая разница между этим, и
        >real_query?

        COPY описана в стандарте SQL92. В PostgreSQL разница ощутима, это так называемый прямой ввод блока данных в базу, т.е. postgresql backend напрямую включает блок данных в таблицу.

        • RE: SQL C API, !*! Igor, 18:16 , 08-Авг-01 (4)
          >>В MySQL нет никакого COPY (Есть
          >>LOAD)
          >
          >Я использую PostgreSQL.
          >
          следовало сказать ;)
          >>какая большая разница между этим, и
          >>real_query?
          >
          >COPY описана в стандарте SQL92. В
          >PostgreSQL разница ощутима, это так
          >называемый прямой ввод блока данных
          >в базу, т.е. postgresql backend
          >напрямую включает блок данных в
          >таблицу.
          ок, есть такое ощущение, что стоит посмореть на
          Postgresql C API...
          /пошел смотреть ;)




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру