-
по поводу excel'a: в excel будут передаваться не все 480000, а только те которые нах в промежутке datea-dateb и в зависимости от промежутка м/у датами,не повсем параметрам а по выбраным в разные таблицы и только по запросу пользователя про сетку: выдернул сетевой кабель
-
я понял всю бредовость мо3й затеи и думаю сделать передачу данных клиентам через сокеты, а базу оставил для случая описаного в предыд7щем посте
-
> про сетку: выдернул сетевой кабель
Т.е. ты проделал следующее
Query.Active := True; // <- здесь ты "выдернул сетку" MyValue := Query.Fields[n].Value; ShowMessage('Урааа ! Я вижу это сгообщение и верю в то, что в этот момент мой клиент загрузил все 60000 записей и сервер больше не нужен !');
Так ?
-
> думаю сделать передачу данных клиентам через сокеты
А MySQL-сервер с твоим MySQL-клиентом, по-твоему, сейчас через шмокеты общается, потому и "тормоза" ?)
-
Сергей М. © (21.11.08 15:02) [42] Да.
Сергей М. © (21.11.08 15:04) [43] мне будет проще передать массив байт через сокеты чем мучаться с запросами.
-
> balepa (21.11.08 15:19) [44] > [42] > Да.
А на самом-то деле это совсем не так. То что ты успешно обратился к 1-й записи, вовсе не говорит загруженности всех записей.
> проще передать массив байт через сокеты
Это как ?
-
Сергей М. © (21.11.08 15:50) [45]
> balepa (21.11.08 15:19) [44] > [42] > Да.
А на самом-то деле это совсем не так. То что ты успешно обратился к 1-й записи, вовсе не говорит загруженности всех записей. Не к первой, а к 6000. Просто сразу не посмотрел что цикл в результате всяческих экспериментов был установлен 6000.
> проще передать массив байт через сокеты
Это как ?
TSocket, Indy
-
> сразу не посмотрел что цикл
Какой нафих цикл ? Где в коде в [42] ты видишь цикл ?
> Не к первой, а к 6000
И что ? С чего ты взял, что 6001-я запись и все последующие вплоть до последней загружены ?
> TSocket, Indy
И каким же образом ты с их помощью (без использования SQL-запросов !) намерен обратиться к БД под управлением MySQL ?
Данные-то, которые ты собрался в массив перегнать, лежат именно там, и достать их оттуда можно только передав MySQL-серверу запрос и получив результат ..
-
Сергей М. © (21.11.08 16:41) [47]> сразу не посмотрел что цикл Какой нафих цикл ? Где в коде в [42] ты видишь цикл ? Так я с сотки писал и как-то ломы было. А на самом деле так:
ZReadOnlyQuery1.SQL.clear;
ZConnection1.Connect;
s:= 'SELECT dt,pnp,znach FROM bl12009 WHERE ((pnp=1) AND (dt BETWEEN '+'''2008-11-17 9:00:00'+''' AND '+'''2008-11-18 9:00:00'+'''));';
ZReadOnlyQuery1.SQL.Add(s);
ZReadOnlyQuery1.Active:= true;
k:= ZReadOnlyQuery1.RecordCount;
SetLength(_ldt,k*sizeof(Variant));
SetLength(_lzn,k*sizeof(Variant));
ZReadOnlyQuery1.First;
for i:= 0 to k-1 do begin
_ldt[i]:= ZReadOnlyQuery1.Fields[1].Value;
_lzn[i]:= ZReadOnlyQuery1.Fields[2].Value;
ZReadOnlyQuery1.Next;
Gauge1.Progress:= Round(i/k*100);
end;
ZReadOnlyQuery1.Active:= false;
ZConnection1.Disconnect; > Не к первой, а к 6000 И что ? С чего ты взял, что 6001-я запись и все последующие вплоть до последней загружены ? Так по недосмотру. > И каким же образом ты с их помощью (без использования SQL- > запросов !) намерен обратиться к БД под управлением MySQL > ? > > Данные-то, которые ты собрался в массив перегнать, лежат > именно там, и достать их оттуда можно только передав MySQL- > серверу запрос и получив результат ..
Так, как говориться переделать пока только практически теоретическую серверную часть религия не запрещает ). А БД останется только для передачи в Excel по запросу пользователя и хранения данных, а там высокая скорость не требуется.
-
> Так я с сотки писал
Понятно. Чукча не читатель, чукча - писатель.
> практически теоретическую серверную часть
О Боже, упаси юзеров от встреч с таким вот Балепой !
-
Сергей М. © (21.11.08 18:58) [49] > Так я с сотки писал Понятно. Чукча не читатель, чукча - писатель. > практически теоретическую серверную часть О Боже, упаси юзеров от встреч с таким вот Балепой !
Пока никто не жаловался. Просто сделал пока для экспериментов программку которая кидает по 800 записей/с в БД. В данный момент реализовано на файлах, т.е. все что надо скидывается в файлы, а с них уже клиентские программы считывают то что им нужно. А я тут решился переделать что бы обойтись без файлов (а то последнее время часто доступов до них нет иногда по 1 минуте, а это ни есть хорошо) и первая мысль была о какой нибудь БД, а теперь сокеты ).
-
> Пока никто не жаловался
Пока , значит, пронесло)
-
balepa (21.11.08 18:52) [48] SetLength(_ldt,k*sizeof(Variant)); это чЁ? как массивы объявлены?
ZReadOnlyQuery1.Fields[1].Value если нужна макс скорость можно вынести за цикл F1:=ZReadOnlyQuery1.Fields[1]; ... _ldt[i]:= F1.Value;
Gauge1.Progress:= Round(i/k*100); а тормоза вот тут :)
|