URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 103
[ Назад ]

Исходное сообщение
"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 , 08-Авг-01 01:03 
>Проблема: потребовалось записывать в SQL базу
>(сервер MySQL) данные. "Пикантность" в
>том, что строк _очень_ много,

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


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

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

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

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

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

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


"RE: SQL C API"
Отправлено Dim , 08-Авг-01 13:19 
>В MySQL нет никакого COPY (Есть
>LOAD)

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

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

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


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