Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
На SQLCE только одна таблица в которой 60000 рядов, каждый ряд имеет 20 полей
Все ряды тем или иным образом модифицируются.
Теперь задача - сохранить изменения с помощью Adapter.
Вот этот простой пример показывает, что скорость сохранения в локальную базу не более 10 рядов с секунду.
Да и то, - это очень сильно зависит от скорости диска и процессора.
То есть, база сохраняется пару часов :(

var cnt = 0;
            foreach (var d in DataSet.Table)
            {
                d.boolValue = false;
                d.intValue = d.intValue + 1;
                d.stringValue = d.stringValue + " ";
                cnt++;
                if (cnt / 2000 * 2000 == cnt)
                {
                    Debug.WriteLine("begin "+DateTime.Now);
                    LocalAdapter.Update(DataSet.Table);
                    Debug.WriteLine("end "+DateTime.Now);
                }
            }


Может, кто-то знает как решить проблему со скоростью записи?
Или есть какая-нибудь альтернатива? (Интересует только ЛОКАЛЬНАЯ альтернатива)
6 мар 13, 14:27    [14019700]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А почему Вы используете цикл вместо запроса (запросов) на UPDATE?!
6 мар 13, 14:31    [14019730]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
pkarklin
А почему Вы используете цикл вместо запроса (запросов) на UPDATE?!


Это просто пример, для вычисления скорости, если кто-то хочет убедиться в моих словах - ничего более.
6 мар 13, 14:34    [14019751]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
Это просто пример, для вычисления скорости, если кто-то хочет убедиться в моих словах - ничего более.


Вы им меряете скорость работы приложения на .NET. Не более.
6 мар 13, 14:35    [14019755]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
http://msdn.microsoft.com/ru-ru/library/z1z2bkx2%28v=vs.90%29.aspx
Вызывает соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в объекте DataTable
то есть это цикл циклов что ли?
(я просто с адаптерами уже года два не работаю, не все помню...)
6 мар 13, 14:42    [14019808]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
pkarklin
Tangous
Это просто пример, для вычисления скорости, если кто-то хочет убедиться в моих словах - ничего более.


Вы им меряете скорость работы приложения на .NET. Не более.


Да на .Net, а при чем тут это? Ну померяйте не на .Net.
Я же не об этом спрашивал. Лучше - по существу вопроса.
6 мар 13, 14:45    [14019830]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Паганель
то есть это цикл циклов что ли?


Ну, да, вместо:

UPDATE
  SomeTable
SET
  boolValue = 0,
  intValue = intValue + 1
  stringValue = stringValue + '',


уйдет апдейт для каждой строки.
6 мар 13, 14:46    [14019834]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
Абсолютно точно.
6 мар 13, 14:47    [14019850]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
Да на .Net, а при чем тут это?


.Net тут не причем. Причем тут Ваш навигационный подход при работе с данными.
6 мар 13, 14:47    [14019851]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
Это не цикл циклов!
Просто, чтобы желающие не ждали часами, тут написано:

Измени 2000 рядов в базе из 60000 рядов и запиши на диск!
После делай тоже самое со следующими 2000 и тд.
6 мар 13, 14:52    [14019907]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
И скорость ЗАПИСИ НА ДИСК от количества изменённых рядов НЕ ЗАВИСИТ, а зависит от количества существующих рядов в таблице.
А их 60000.
6 мар 13, 14:55    [14019924]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
ну я же привел цитату из доки, там же написано "для каждой"
6 мар 13, 14:55    [14019927]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
Измени 2000 рядов в базе из 60000 рядов и запиши на диск!


Что выльется в 2 000 инструкций UPDATE.
6 мар 13, 14:55    [14019928]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
И скорость ЗАПИСИ НА ДИСК от количества изменённых рядов НЕ ЗАВИСИТ, а зависит от количества существующих рядов в таблице.
А их 60000.


и у таблицы есть первичный ключ?
6 мар 13, 14:57    [14019944]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
pkarklin
Tangous
И скорость ЗАПИСИ НА ДИСК от количества изменённых рядов НЕ ЗАВИСИТ, а зависит от количества существующих рядов в таблице.
А их 60000.


и у таблицы есть первичный ключ?


Да есть из 5 полей.
6 мар 13, 15:01    [14019981]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous,

Не знаю, сработает ли это для CE, но попробуйте завернуть UPDATE в транзакцию.
6 мар 13, 15:04    [14020003]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
Я поясню, наверное в первом посте мало информации.
Еще раз подчеркну - табличка из 60000 рядов

//метка времени 1
            foreach (var d in DataSet.Table)
            {
                d.boolValue = false;
                d.intValue = d.intValue + 1;
                d.stringValue = d.stringValue + " ";
            }
//метка времени 2
                                   LocalAdapter.Update(DataSet.Table);
//метка времени 3


Между 1 и 2 меткой - 5 секунд.
Между 2 и 3 меткой - ДВА ЧАСА! Без всяких циклов.
6 мар 13, 15:08    [14020036]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tangous
Между 2 и 3 меткой - ДВА ЧАСА! Без всяких циклов.

Цикл делает LocalAdapter.
Как уже было процитировано
"Вызывает соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в объекте DataTable"
6 мар 13, 15:50    [14020392]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
Glory
Tangous
Между 2 и 3 меткой - ДВА ЧАСА! Без всяких циклов.

Цикл делает LocalAdapter.
Как уже было процитировано
"Вызывает соответствующие операторы INSERT, UPDATE или DELETE для каждой вставленной, обновленной или удаленной строки в объекте DataTable"


Зачем говорить очевидное?
Вопрос в другом.
Можно ли как то увеличить производительность?
Или использовать другое решение для сохранения локальных данных на диск?
Фантазирую... например, SQLite.
6 мар 13, 16:59    [14020940]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tangous
Можно ли как то увеличить производительность?

Для увеличения производительности сначала ищут узкое место.
Вы, например, как мониторили, что в вашей системе происходит ?
6 мар 13, 17:08    [14021015]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
Или использовать другое решение для сохранения локальных данных на диск?
Фантазирую...


Почему бы не пофантазировать об Express редакции MS SQL?!
6 мар 13, 17:09    [14021034]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
Glory
Tangous
Можно ли как то увеличить производительность?

Для увеличения производительности сначала ищут узкое место.
Вы, например, как мониторили, что в вашей системе происходит ?


что мониторить в коде из 2-х строчек? или-или. Выше все написано...
Узкое место - адаптер Microsoft.
Точнее обертка для адаптера,
поскольку адаптер я уже переписал сам, где оптимизировал инструкции...
6 мар 13, 17:52    [14021292]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
Tangous
Member

Откуда:
Сообщений: 34
pkarklin
Tangous
Или использовать другое решение для сохранения локальных данных на диск?
Фантазирую...


Почему бы не пофантазировать об Express редакции MS SQL?!


Да я бы пофантазировал..., но только APP перемещается между нодами кластера.
А ставить еще и express на кластер - увольте, - лишний геморрой.
6 мар 13, 17:56    [14021317]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
Tangous,
я извиняюсь но какой-то глупый разговор происходит

из вашего .net можно выполнить прямую инструкцию типа
update TableX set boolValue = false,
intValue = intValue + 1,
stringValue = stringValue + " "

т.е не пользуясь никакими внутренними абстракциями .net
попробуйте и увидите что все будет летать
60тыс записей это вообще копейки
сервера миллионами строк ворочают...
6 мар 13, 18:30    [14021472]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь. Производительность SQLCE  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Tangous
Да я бы пофантазировал..., но только APP перемещается между нодами кластера.


Аппликуха с CE на кластере? Жестко...

Tangous
А ставить еще и express на кластер - увольте, - лишний геморрой.


Увольняю. Его нельзя поставить в кластерной конфигурации.
6 мар 13, 19:31    [14021646]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить