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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO рекордсет, пакетное обновление 
:(
    Опции темы
FINANSIST
Дата 28.3.2012, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Есть клиент на mdb
Есть хранилище на sql server
надо с клиента туда заливать записи.
тестовый код написал, на почти пустом хранилище работает нормально (100 тыс.записей)
Код

Sub Export()
Dim conn As ADODB.Connection: Dim recset As ADODB.Recordset
Dim x As Integer: Dim y As Integer: Dim tstart
tstart = Time
Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=dc-ax3;Packet Size=10000;Initial Catalog=POSReports"
conn.Open
Set recset = New ADODB.Recordset
recset.Open "F1_bufer", conn, adOpenDynamic, adLockOptimistic
Debug.Print recset.Fields.Count
x = 0
Do
    recset.AddNew
    x = x + 1
    For y = 1 To recset.Fields.Count - 1
        recset.Fields(y) = 1.5
    Next y
    recset.Update
Loop While x < 30001
recset.UpdateBatch
Set recset = Nothing: Set conn = Nothing
MsgBox Format(Time - tstart, "hh:mm:ss")
End Sub

Вопрос : как будет работать код когда увеличится объем хранилища на порядки ( к примеру 5 млн.записей)
Рекордсет открываясь будет ли тянуть на себя с сервера все данные  или часть данных?
А что будет происходить на сервере по update batch, будут добавляться новые данные или будет полный апдейт 5 миллионов+ новые данные?

Это сообщение отредактировал(а) FINANSIST - 28.3.2012, 15:56


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Akina
Дата 28.3.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(FINANSIST @  28.3.2012,  16:50 Найти цитируемый пост)
Рекордсет открываясь будет ли тянуть на себя с сервера все данные  или часть данных?

А оно ему зачем? 

Цитата(FINANSIST @  28.3.2012,  16:50 Найти цитируемый пост)
или будет полный апдейт 

Опять же - зачем?

Цитата(FINANSIST @  28.3.2012,  16:50 Найти цитируемый пост)
что будет происходить на сервере по update batch

В данном коде - совершенно ничего. Данная строка не имеет смысла.
А вот рекордсеты и коннекшены следует явно закрывать перед очисткой.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 29.3.2012, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

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



Вообще по класике на сервер/клиент заливаются только изменения.
PM MAIL WWW ICQ Skype GTalk   Вверх
FINANSIST
Дата 29.3.2012, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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




Цитата(Akina @  28.3.2012,  16:37 Найти цитируемый пост)
В данном коде - совершенно ничего. Данная строка не имеет смысла.

Akina,  резюмируй ВАЛЕНКУ:  я правильно понял, что 
1) Update butch в коде не нужен?
2) методы update объекта recordset в данном конкретном случае будут добавлять только новые блоки на сервер но не обновлять текущие записи сервера [ими же+новый блок]?
3) чем грозит незакрытие рекордсетов перед чисткой?


Цитата(bopoha @  29.3.2012,  00:19 Найти цитируемый пост)
Вообще по класике на сервер/клиент заливаются только изменения

?


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
Akina
Дата 29.3.2012, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



1) Да
2) Update записывает на сервер текущее состояние текущей записи. Другие записи напрямую не затрагиваются.
3) Зависанием и незакрытием коннектов, утечками памяти (к счастью, не в данном случае) и прочей хренью.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
FINANSIST
Дата 30.3.2012, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Есть ли смысл вывести recset.Update за цикл и проапдейтить все ровно один раз в конце?
(тестировал оба варианта, по скорости непонятно- сервак загружен неравномерно)...


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


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

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


 




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


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

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