| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Быстродействие кода |
| Автор: jimbo 26.1.2010, 18:35 |
| Привет всем! Абстрактная задача. Поступают сообщения извне и программа должна сохранять их в БД. Если время на запись 50 сообщений в БД составляет 3 секунды, а за 3 секунды стабильно приходит 80 сообщений, можно ли в реальном времени загружать все сообщения? на прием сообщений работает сокет. функция format(char*) формирует массив строк-insert`ов. функция ExecQueries запихивает в БД сообщения. БД - MYSQL язык C++ среда MSVS08 ОС Виста Я реализовал так: отдельный поток читает данные из буфера. вставляет временную метку о том во соклько пришло сообщение. формирует инсерт для БД. записывает этот инсерт в память. Таким образом все инсерты хранятся в памяти по технологии СПИСОК. Второй поток смотрит есть ли сообщений. и начиная с первого записывает в БД. Смотрю каждую секунду количество сообщений в памяти. 0 22 33 54 и так постоянно растет! Можно ли сохранить в БД все сообщения? К вечеру-ночи-утру количество прибывающих сообщений уменьшается. т.е. я рассчитываю что список к утру обнулится - но пока не тестил. сегодня запущу - проверю. Каким образом можно ускорить процесс заливания в БД? использую libmysql.lib - библиотеку для взаимодействия с БД. Через минут 5 уже 10000 сообщений не залитых:( |
| Автор: xvr 27.1.2010, 13:25 |
| Заливать сразу по несколько сообщений (см insert values в SQL) |
| Автор: jimbo 27.1.2010, 15:18 |
| все намного проще. можно заливать файлами. функция LOAD DATA INFILE |