Собственно, вдохновившись постом "Миллиард таблиц?!" решил провести собственный эксперимент. Правда, вместо PostgreSQL и Perl использовал SQLite и Lazarus.
Подробный отчёт: http://petrochenko.ru/computers/milliar ... qlite.html
Модератор: Модераторы
procedure TMainForm.FormCreate(Sender: TObject);
begin
SQL_db:=TSQLiteDatabase.Create('D:\mln.db3');
end;
procedure TMainForm.Button2Click(Sender: TObject);
const
maxq = 100000; // * 10000;
var
SQL_query: string;
i: integer;
t_start, t_finish: TTime;
begin
ProgressBar1.Max:=maxq;
t_start:=Time;
SQL_db.BeginTransaction;
for i:=0 to maxq do
begin
SQL_query:='CREATE TABLE [users'+IntToStr(i)+'] ([id] INTEGER, [name] CHAR, [pass] CHAR, [type] INTEGER)';
SQL_db.execsql(SQL_query);
ProgressBar1.Position:=i;
Label1.Caption:='Создано '+IntToStr(i)+' таблиц из'+IntToStr(maxq)+'('+IntToStr(round(i*100/maxq))+'%)';
t_finish:=Time;
Label2.Caption:='Прошло времени: '+TimeToStr(t_finish-t_start);
Application.ProcessMessages;
end;
SQL_db.Commit;
end;
Имхо, просто организовали нагрузочное тестирование одного из моментов компонента для доступа к базе sqlite. По поводу утечки памяти нужно детально смотреть причину и устранять ее.
Хотя я попутно узнал, что скорость создания таблиц в базе SQLite снижается пропорционально увеличению объёма базы.
Ну и утечку памяти зафиксировал.
vada писал(а):Хотя я попутно узнал, что скорость создания таблиц в базе SQLite снижается пропорционально увеличению объёма базы.
Неожидано!
Nik писал(а): Хотя я попутно узнал, что скорость создания таблиц в базе SQLite снижается пропорционально увеличению объёма базы.
Хочу спросить? А если вы будете делать коммит не в конце!? цикла а внутри...
А после какого количества снижение скорости становится заметным?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21