|
|
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
Привет всем. Вопрос следующий: имеется приложение, написанное на vc++ 6.0, в котором используется DAO. В этом приложении производятся вычисления, в результате которых примерно каждые 0.01 сек осуществляется сброс в базу результатов расчета. Каждый из них я записываю последовательностью операций AddNew() и последующим Update(). При этом наблюдается следующий эффект: в самом начале, в первой 1000 записей, некоторое кол-во записей блоком по 100-200 записей пишутся раньше тех, что должны быть записаны до них. Проверяю, записывая их в обычный файл - всё нормально. Т.е. они "гуляют" где-то в памяти и "забывают" порядок, в котором шли друг за другом. Кто-нибудь с таким сталкивался? Можете доходчиво объяснить причину сего и как с этим бороться? Да, вычисления и запись в базу производятся в отдельном потоке, но в одном и том же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 20:40 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
В базе нет порядка записей. Его надо задавать. Вставлять при формировании записи номер, время, или ещё что-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 21:04 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
автоинкрементное поле на худой конец можно добавть в таблицу(и сделать его первичным ключом) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 21:21 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
В базе 66 полей (65 для результатов вычислений на каждом временном шаге, первое поле - время, в которое было произведено вычисление). Я так понимаю, что записи должны добавляться в конец таблицы. Иначе при отображении результатов мне придется делать сортировку, а для миллиона записей это сами знаете что. Я неправ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 21:28 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
b.a.n.g.Я так понимаю, что записи должны добавляться в конец таблицы. Иначе при отображении результатов мне придется делать сортировку, а для миллиона записей это сами знаете что. Я неправ? Таблица - это множество. Ни конца, ни начала у неё нет. Надо делать сортировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 21:50 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
Кстати, если сортировать средствами sql server'а, то скорость получится нормальная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 21:58 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
2 Изопропил Если я сделаю такое поле, то при последующем последовательном считывании таблицы (с помощью MoveNext), всё будет тип-топ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 22:10 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
2 Осака Вестингауз К сожалению даже без сортировки скорость чтения таблицы неприемлима (приходится долго ждать отображения графиков результатов .. при миллионе записей доходит до минуты), а уж если сортировать, то ппц :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 22:14 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
b.a.n.g.2 Изопропил Если я сделаю такое поле, то при последующем последовательном считывании таблицы (с помощью MoveNext), всё будет тип-топ? Сортировка по первичному индексу дополнительных затрат не вызовет (DAO) При использовании MSSQL - делайте кластерный индекс. DAO как используется ? GetRows пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 22:30 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
2 Изопропил DAO используется через MFC, если вы об этом. GetRows, нет, не пробовал .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 22:35 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
b.a.n.g.2 Изопропил DAO используется через MFC, если вы об этом. GetRows, нет, не пробовал .. Именно об этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 22:42 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
Всем спасибо. Проблема решена добавлением автоинкрементного индекса и сортировкой по нему, как и советовали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2007, 23:55 |
|
||
|
При добавлении в базу большого кол-ва записей нарушается их порядок
|
|||
|---|---|---|---|
|
#18+
b.a.n.g. пишет: > их в обычный файл - всё нормально. Т.е. они "гуляют" где-то в памяти и > "забывают" порядок, в котором шли друг за другом. Кто-нибудь с таким > сталкивался? Можете доходчиво объяснить причину сего и как с этим > бороться? Вы бы задавали лучше ваши вопросы в более подходящей для этого конференции. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2007, 10:25 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34322353&tid=2029468]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 440ms |

| 0 / 0 |
