Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Что лучше сипользовать?  [new]
vano_vvv
Member

Откуда:
Сообщений: 20
База данных состоит из примерно 10 таблиц. Все таблици имеют одинаковую структуру - пять полей тика int, одно поле - ключевое. В таблицах порядка 10 000 000 записей. Нужно на локально компьютере извлечь порядка 80 000 записей за 3-4 сек. Компьютер Cel667 128Мб ОЗУ, Win2k. Клиент нужно написать на С/С++ в виде dll для использования в LabView.

Какую СУБД порекомендуете
7 окт 03, 21:30    [367655]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Тут, как по мне, что-то файл-серверное как раз подойдёт, типа парадокса, фокса, аксеса и прочего, ну или мускул можно попробовать. Думаю, что 10 млн. записей он переживёт
7 окт 03, 22:04    [367672]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
vano_vvv
Member

Откуда:
Сообщений: 20
аксес через ODBC тормозит ужасно (где-то 30сек). mysql через ODBC лучше (первый запрос 15-20сек последующие 5-10). libmysql.dll при вызове из LabView почему-то приводит к ошибке типа "Приложение выполнело недопустимую операциию и будет закрыто".
В качестве клиента использовал SQLAPI++ 3.1.3
7 окт 03, 23:00    [367690]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
brahew
Member

Откуда: 61;90
Сообщений: 724
Бери DBF, если правильно организуеш индексы и будеш правильно применять индексные фильтры, то быстродействие на локальной машине будет самое оно
8 окт 03, 03:36    [367745]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
andy753
Member

Откуда: Moscow
Сообщений: 368
Попробуй ASA 8.x или лучше 9.х. А вообще я для такого числа данных писал собственный (простейший) компонент доступа на файлах. Правда там в большинстве ситуаций доступ был четко определен. Ну типа - выгребать все данные за день, за последний час текущего дня...

Поэтому и структура файлов и доступ к данным был гораздо быстрее СУБД. Но и задача была не общая :)
8 окт 03, 09:08    [367829]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
vano_vvv
Member

Откуда:
Сообщений: 20
Прикрутил libmysql.dll к LabView - поекспериментирую еще -собщу что получилось. Что-то мне этот сервер начал нравится.
8 окт 03, 10:26    [367948]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
ODBC дает ощутимое снижение скорости (по крайней мере для mysql).

Если будете использовать mysql, надо попробовать вот что:

Я надеюсь у вас все выборки уже с индексами, так что давайте попробуем настроить буферы для mysql.

После такого запроса посмотрите состояние mysqld (это команда show status) И обратите внимание на переменные key_reads и key_read_request. Их нормальное отношение должно быть меньше чем 0.01. Если отношение больше, то надо в .ini файле увеличить параметр key_buffer_size.. (Скажем, для первой прикидки - примерно до половины RAM)
8 окт 03, 11:07    [368041]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
Balashov Denis
Member

Откуда: Челябинск
Сообщений: 35
смотря какой запрос будет... Приведи пример хотя бы.

--with regards, Denis
8 окт 03, 13:07    [368376]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
vano_vvv
Member

Откуда:
Сообщений: 20
запрос примерно такой
SELECT * FROM Tab WHERE Dt BETWEEN 100000 AND 200000 ORDER BY Dt
поле Dt - int primary key

За сколько времени можно заполнить двумерный массив не учитывая время на выделение памяти под этот масив? Все поля - int. Комп - Cel667 128Мб ОЗУ Win2k
8 окт 03, 18:45    [369269]     Ответить | Цитировать Сообщить модератору
 Re: Что лучше сипользовать?  [new]
vano_vvv
Member

Откуда:
Сообщений: 20
тут еще вопрос - функция mysql_fetch_row возвращает массив строк, далее им надо делать atoi чтоби преобразовать в int. Можно ли как-то получить данные того типа что мне надо? все-таки выполнить 400000 раз atoi - это тоже отнимет некоторое время .
И еще а если у меня будет double и будет крайне нежелательно потерять точность на преобразованиях из строк, что делать?
Я потозреваю что данные то сохраняются в файлах как положено : int - 4 байта, double - 8 байт, и т.д. а не в виде строк (число 1234567 сохреняется как последовательность байт 0x87 0xD6 0x12 0x00 а не как 0x31 0x32 0x33 0x34 0x35 0x36 0x37) Есть какой-то механизм непосредственно получить эти байты?
8 окт 03, 19:25    [369324]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить