Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снижение бысродействия сжатой MDB базы / 4 сообщений из 4, страница 1 из 1
03.06.2003, 14:21
    #32175173
RioRio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снижение бысродействия сжатой MDB базы
Исходные данные
- установлены 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 - ошибка.

Что посоветуете?

Спасибо.
...
Рейтинг: 0 / 0
03.06.2003, 14:42
    #32175212
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снижение бысродействия сжатой MDB базы
Попробуй сжимать не через JRO.JetEngine, а через метод DAO -> dao.DBEngine.CompactDatabase ...
...
Рейтинг: 0 / 0
03.06.2003, 14:43
    #32175215
Ой Вэй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снижение бысродействия сжатой MDB базы
Я неоднократно сжимал базы по всему диску своей программой и никто вроде не замечал снижения быстродействия.

Вот содержательная часть текста (CString cBase — путь к базе с расширением):

#include <odbcinst.h>

BOOL retcode = SQLConfigDataSource(
NULL,
ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"COMPACT_DB="+cBase+" "+cBase);

Версия базы при этом сохраняется.
Могу прислать или выложить программу или текст.
Если попробуешь — расскажи о результатах.
...
Рейтинг: 0 / 0
03.06.2003, 14:47
    #32175223
RioRio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снижение бысродействия сжатой MDB базы
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
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снижение бысродействия сжатой MDB базы / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]