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... /пошел смотреть ;)
|