Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость записи 10 000 в SQLLITE 
:(
    Опции темы
qpile
Дата 30.11.2011, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



Здравствуйте!
Пытаюсь записать 100000 строк в SQLLITE. Но проблема- В консольном приложении это занимает 10-20 секунд. А в WPF около 90-120 секунд. В чем может быть причина? Код приложил
Код

cmd.CommandText = "CREATE TABLE IF NOT EXISTS TEST_TABLE ( COLA INTEGER, COLB TEXT, COLC DATETIME )";
            cmd.ExecuteNonQuery();
            string transaction = "BEGIN;";
            int counter = 0;
            for (int i = 0; i < 100000; i++)
            {
                transaction = transaction + "INSERT INTO TEST_TABLE ( COLA, COLB, COLC ) VALUES (" + i.ToString() + ",'ABC','2008-12-31 18:19:20' );";
                counter = counter + 1;
                if (counter > 100)
                {
                    transaction = transaction + "COMMIT;";
                    cmd.CommandText = transaction;
                    cmd.ExecuteNonQuery();
                    counter = 0;
                    transaction = "BEGIN;";
                }

            }

PM MAIL   Вверх
jonie
Дата 4.12.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 8
Всего: 118



sqlite создает journal файл на каждую транзакионную операцию.. мб дело в этом


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Karrde
Дата 5.12.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 11.11.2006

Репутация: нет
Всего: нет



А консольное приложение тоже на .net? Т.е. у вас один и тот же код, только в двух разных приложениях?

Это сообщение отредактировал(а) Karrde - 5.12.2011, 12:22
PM MAIL   Вверх
Void
Дата 5.12.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: нет
Всего: 173



Код страшен. Пользуйтесь параметрами и prepared statements вместо конструирования гигантской строки запроса. Скорее всего её разбор в движке sqlite занимает большую часть времени.
100 записей в транзакции для такой таблицы — это очень мало. Поиграйтесь с размером пакета, сто тысяч записей можно вообще в одной транзакции запихать, на моей машине это заняло меньше секунды.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0620 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.