|
|
|
Снижение бысродействия сжатой MDB базы
|
|||
|---|---|---|---|
|
#18+
Исходные данные - установлены Access 97 + Jet4.0 - Есть база с несколькими индексированными таблицами - База создана в формате 3х - программа на С++ Для сжатия использую WideString wsSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+aBaseFileName; WideString wsDestination = "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Engine Type=4;Data Source="+tmpBaseName; Variant JE = Variant::CreateObject("JRO.JetEngine"); JE.OleFunction("CompactDatabase", wsSource, wsDestination); Те хочу получить 3х же базу. Результатирующая база работает раз в 10 медленне исходной. Если тоже делаю из 97 Accessa то быстродействие ОК Если Jet OLEDB:Engine Type=5 то быстродействие ОК Думаю, что проблема в том, что 4й Jet не совсем хорошо пересоздает индексы. Пробовал указать Provider=Microsoft.Jet.OLEDB.3.5 - ошибка. Что посоветуете? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2003, 14:21 |
|
||
|
Снижение бысродействия сжатой MDB базы
|
|||
|---|---|---|---|
|
#18+
Попробуй сжимать не через JRO.JetEngine, а через метод DAO -> dao.DBEngine.CompactDatabase ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2003, 14:42 |
|
||
|
Снижение бысродействия сжатой MDB базы
|
|||
|---|---|---|---|
|
#18+
Я неоднократно сжимал базы по всему диску своей программой и никто вроде не замечал снижения быстродействия. Вот содержательная часть текста (CString cBase — путь к базе с расширением): #include <odbcinst.h> BOOL retcode = SQLConfigDataSource( NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", "COMPACT_DB="+cBase+" "+cBase); Версия базы при этом сохраняется. Могу прислать или выложить программу или текст. Если попробуешь — расскажи о результатах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2003, 14:43 |
|
||
|
Снижение бысродействия сжатой MDB базы
|
|||
|---|---|---|---|
|
#18+
try { AnsiString cmdString = "COMPACT_DB="+abaseFileName+" "+abaseFileName+" General"; int attribLen = cmdString.Length(); attribString = new UCHAR[attribLen + 2]; if(attribString == NULL) return false; strcpy(attribString, cmdString.c_str()); attribString[attribLen + 1] = '\0'; UCHAR driverName[] = "Microsoft Access Driver (*.mdb)"; rc = SQLConfigDataSource(NULL, ODBC_ADD_SYS_DSN, driverName, attribString); } Именно после подобного сжатия я и уперся в снижения (до 10ти раз) производительности. А потом стал пробовать другие способы. Еще раз подчеркну важный момент Версия MDB - 3х, а Jet стоит 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2003, 14:47 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1796&tid=1681262]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 341ms |

| 0 / 0 |
