Konst писал(а):
помоему nesco схемаЧестно сказать, то я не помню такой схемы
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Konst писал(а): помоему nesco схемаЧестно сказать, то я не помню такой схемы |
|||
карма: 22 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 2 раз(а), последний 2021-05-22 08:01:51 |
|||
карма: 0 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
А это не на базе штатных примеров, где *.csv преобразуется в SQlite
|
|||
карма: 22 |
|
Ответов: 1328
Рейтинг: 69
|
|||
хм.. что-то не видел такого в штатных примерах.. это в ВиндовсДатаБэйс?
|
|||
карма: 2 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Konst писал(а): хм.. что-то не видел такого в штатных примерах.. это в ВиндовсДатаБэйс?Да не было такого, че-то я делал подобное на базе штатных примеров |
|||
карма: 22 |
|
Ответов: 704
Рейтинг: 7
|
|||
Кстати, а на счет загрузки кучки строк: как правильно сделать INSERT не каждой строки по-отдельности, а всех сразу (5-10 строк)? Чтоб выиграть во времени.
|
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Neo писал(а): Чтоб выиграть во времени.Lasciate ogni speranza voi ch'entrate.(итал.) Если вспомнить, что в компе все обрабатывается последовательно (для строк - посимвольно), то только скоростной многоядерный процессор и скоростной хард смогут помочь.Чем короче строка - тем быстрее она записывается в БД. Чем оптимальней запрос к БД - тем скорее получаешь результат. |
|||
карма: 25 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo писал(а): Чтоб выиграть во времени.Многоядерный процессор, несколько (по числу ядер) баз в ОЗУ и работа в несколько потоков. Потом, правда, маета с несколькими базами нивелирует всю выгоду от параллельных вычислений. |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
Эт я наверное выразился неправильно в заполночное время
Просто каждый раз при записи в базу (на диск) идет обращение к файлу, создание журнала работы с базой и т.д.. Хочу эти мои строки не по-одной записывать, а как-то пачечкой. Или это делается обычным запросом, где каждый запрос в новой строке? |
|||
карма: 0 |
|
Ответов: 758
Рейтинг: 112
|
|||
Neo, Когда-то я уже писал про ускорение загрузки в это теме поищи.
Tad справедливо заметил, что при таком способе сильно повышается риск потери информации, но зато колоссальный прирост скорости при больших объемах
|
|||
карма: 1 |
| ||
файлы: 1 | code_27089.txt [300B] [304] | ||
Голосовали: | Neo |
Ответов: 704
Рейтинг: 7
|
|||
miver, спасибо за вариант, но мне данные терять нельзя совсем.
А можно просто все запросы послать списком строк? У меня вообще задача такая: данные, приходящие со скоростью 20 строк в секунду, нужно писать в базу. Она должна быть на диске, ибо используется как лог, не более. Вот чтоб не делать каждый раз запись отдельно (это немного тормозит), я решил буферезировать штук 10 (может 20), а потом эту пачку записать в новом потоке. |
|||
карма: 0 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Neo, вообще-то он Вам предложил именно такой вариант, начните с PRAGMA synchronous=OFF, это отключит ожидание записи на диск. SQLite по умолчанию может до двух мегабайт данных буферизировать в память, ожидая пока диск запишет предыдущую порцию. И этот буфер можно увеличивать.
|
|||
карма: 1 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Neo писал(а): Вот чтоб не делать каждый раз запись отдельно (это немного тормозит), я решил буферезировать штук 10 (может 20), а потом эту пачку записать в новом потокеНахрена. Используй UDP порт для связки модуля получения данных и модуля записи в базу. UDP порт имеет системный буфер, тебе не нужно будет делать свой. К тому же, движок базы сам имеет буфер комманд |
|||
карма: 22 |
|
Ответов: 758
Рейтинг: 112
|
|||
Neo писал(а): А можно просто все запросы послать списком строк?Да конечно, но скорости это не добавит. Используй transaction без отключения синхронизации и хранения в памяти Neo писал(а): ибо используется как логну так пиши сразу в файл напрямую будет быстрее. Зачем тебе БД , если запросы к ней делать не будеш |
|||
карма: 1 |
|
Ответов: 704
Рейтинг: 7
|
|||
1nd1g0, но ведь упомянуто же, что сильно возрастает риск потери данных.
А движок будет буферизировать, если провести PRAGMA synchronous=OFF ? - запутался Может у базы и есть сбой буфер, но при записи в файлы от 5Мб идут тормоза главного потока. Вот и хочу тут вставить буфер и в базу писать из параллельного потока. Это неверно? |
|||
карма: 0 |
|