powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / баги или не баги
25 сообщений из 44, страница 1 из 2
баги или не баги
    #38790073
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В своём воображении вставил я в таблицу T(V INTEGER) 10 млрд. записей (5 млрд. положительных V, и 5 млрд. отрицательных) . Реально вставлять долго, поэтому в воображении.
Вопросы:
1. Есть ли бага FB в том, что
Код: sql
1.
select count(*) from T

не вернёт мне 10 млрд?

2. Есть ли бага FB в том, что после
Код: sql
1.
update T set V = 1 where V > 1

я не смогу узнать кол-во реально обновлённых записей вызовом isc_dsql_sql_info с isc_info_sql_records, как это делается на табличках меньшего размера?

Понятно что в integer 5 млрд не вмещается. Я вот только не пойму есть ли в этом баг. По мне так баг, т.к. я явно получаю ложные результаты функций. А когда я получаю ложные результаты функций, то оцениваю это как баг.
А как вы оцениваете? :)
...
Рейтинг: 0 / 0
баги или не баги
    #38790087
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

Для первого запроса. С чего ты взял?
...
Рейтинг: 0 / 0
баги или не баги
    #38790201
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

твои "баги" отсутствуют в ФБ3, можешь не напрягаться
...
Рейтинг: 0 / 0
баги или не баги
    #38790220
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисДля первого запроса. С чего ты взял?
Сделал запрос select count(*) from T. Тип результата: INTEGER. От количества записей в таблице естественно не зависит.
...
Рейтинг: 0 / 0
баги или не баги
    #38790245
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee,

хм... никогда не обращал внимание. В FB3 точно BIGINT. В том числе и для ранжирующих функций (в 3 диалекте)
...
Рейтинг: 0 / 0
баги или не баги
    #38790577
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeВ своём воображении вставил я в таблицу T(V INTEGER) 10 млрд. записейА ты пробовал провернуть - без воображения, в реале - 1 (один) млрд ?
...
Рейтинг: 0 / 0
баги или не баги
    #38790711
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидNickDeeВ своём воображении вставил я в таблицу T(V INTEGER) 10 млрд. записейА ты пробовал провернуть - без воображения, в реале - 1 (один) млрд ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
execute block as
declare variable I integer;
begin
  I = 1;
  while (I <= 100000000) do
  begin
    insert into T(V) values(:I);
    I = I + 1;
  end
end


100000000 записей было добавлено в таблицу T

------ Информация о производительности ------
Время подготовки запроса = 0ms
Время выполнения запроса = 5m 44s 13ms
Current memory = 34 967 472
Max memory = 66 884 652
Memory buffers = 2 048
Reads from disk to cache = 237
Writes from cache to disk = 306 132
Чтений из кэша = 302 446 960

Умножить на 10 и будет миллиард. Только это почти час ждать.
...
Рейтинг: 0 / 0
баги или не баги
    #38790746
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeУмножить на 10 и будет миллиард. Только это почти час ждать.
А теперь чисто по приколу попробуй то же самое проделать с Оракулом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
баги или не баги
    #38790755
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDee100000000 записей было добавлено в таблицу T
Время выполнения запроса = 5m 44s 13ms
Memory buffers = 2 048
Reads from disk to cache = 237
Writes from cache to disk = 306 132
Чтений из кэша = 302 446 960Везучий. Или просто таблица без индекса и, само собой, fw = off ;-)
...
Рейтинг: 0 / 0
баги или не баги
    #38790792
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

в чём везучесть? :)
проц 2.3 гигагерца (ноутбучный), винт на 5400 оборотов (ноутбучный), винда с 4 гигами памяти (ноутбучными), индексов нет, FW включен (никогда его не выключал).
Упирается не в скорость винта, а в процессор.
На твоём мега-железе оно разве не быстрей?
...
Рейтинг: 0 / 0
баги или не баги
    #38790808
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА теперь чисто по приколу попробуй то же самое проделать с Оракулом.
Его же ставить нужно :)
...
Рейтинг: 0 / 0
баги или не баги
    #38790835
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeНа твоём мега-железе оно разве не быстрей?Не помню уже. Но я делал таблицу с другой структурой (там, помимо ID, было еще два поля: varchar(36) & bigint).
Основная песня начинается после того, как построишь индексы на такой таблице.
...
Рейтинг: 0 / 0
баги или не баги
    #38790836
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeУмножить на 10 и будет миллиард. Только это почти час ждать.
Можно немного ускорить (~25%), если завернуть в автономки по 1млн записей.
...
Рейтинг: 0 / 0
баги или не баги
    #38790844
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmМожно немного ускорить (~25%), если завернуть в автономки по 1млн записей.1. 25% это много
2. не верю
...
Рейтинг: 0 / 0
баги или не баги
    #38790883
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad1. 25% это много
2. не верю
Соврал ~20% :)
speed test
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
-- Перед каждым запуском делаю
RECREATE TABLE T (
    V  INTEGER
);

execute block as
declare variable I integer;
begin
  I = 1;
  while (I <= 10000000) do
  begin
    insert into T(V) values(:I);
    I = I + 1;
  end
end
-- Execute time = 43s 384ms
-- Execute time = 43s 509ms
-- Execute time = 43s 321ms

execute block as
declare variable I integer;
declare variable c integer;
begin
  c = 1;
  while (c <= 10) do
  begin
      in autonomous transaction do
      begin
          I = 1;
          while (I <= 1000000) do
          begin
            insert into T(V) values(:I);
            I = I + 1;
          end
      end
      c = c + 1;
  end
end
-- Execute time = 34s 211ms
-- Execute time = 35s 397ms
-- Execute time = 34s 960ms

/*
(43.384 + 43.509 + 43.321) / 3 = 43.4046666666667
(34.211 + 35.397 + 34.960) / 3 = 34.856
(43.4046666666667 - 34.856) / 43.4046666666667 * 100  = 19.6952708618122
*/

...
Рейтинг: 0 / 0
баги или не баги
    #38790892
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В текущей версии птицы алгоритм слияния сейфпоинтов несколько неоптимален.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
баги или не баги
    #38790907
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВ текущей версии птицы алгоритм слияния сейфпоинтов несколько неоптимален.

Забыл сказать, что гонял тест на 3.0 FW=ON
...
Рейтинг: 0 / 0
баги или не баги
    #38790958
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgmЗабыл сказать, что гонял тест на 3.0 FW=ON
Уточняю: во всех существующих версиях Firebird этот алгоритм неоптимален.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
баги или не баги
    #38790960
1 диалект
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr "баги" отсутствуют в ФБ3, можешь не напрягаться
А для первого диалекта? Или bigint теперь есть и там?
...
Рейтинг: 0 / 0
баги или не баги
    #38790963
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 диалектА для первого диалекта? Или bigint теперь есть и там?
есть и там
...
Рейтинг: 0 / 0
баги или не баги
    #38790970
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
afgm,

тест делал так: recreate, commit, exec block, commit и далее по кругу

fw=on

1. вставка 1х10М записей
Execute time = 32s 343ms
Execute time = 31s 297ms
Execute time = 30s 625ms

2. вставка 10х1М записей
Execute time = 31s 984ms
Execute time = 33s 47ms
Execute time = 32s 265ms
...
Рейтинг: 0 / 0
баги или не баги
    #38790972
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr1 диалектА для первого диалекта? Или bigint теперь есть и там?
есть и там

но можно только SELECT из него делать. В PSQL использовать не получится.
Создать таблицу с полем BIGINT тоже.
...
Рейтинг: 0 / 0
баги или не баги
    #38790975
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

мало того, что пальцем в небо, так ещё и мимо

Когда (если) подумаешь головой, то поймёшь, что работа анду-лога в этом тесте до лампочки и никак не объяснит мифические 20% выигрыша при вставке пачками.
А если потрудишься глянуть на графики загрузки CPU\IO, то может быть наступит хоть какое-то просветление.
...
Рейтинг: 0 / 0
баги или не баги
    #38790981
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladмало того, что пальцем в небо, так ещё и мимо
Да, пожалуй. Слияние мелочи по одной записи тормозить не может, а лог транзакции убивается
в обоих случаях ещё до начала массового слияния.

Интересно было бы посмотреть на разницу скоростей если перед EB поставить явный savepoint...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
баги или не баги
    #38791002
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladтест делал так: recreate, commit, exec block, commit и далее по кругу
именно так и делал
Поднял память до 2 гигов (было 512) (DefaultDbCachePages = 131072)
Страница 16к
Firebird-3.0.0.31369-0_x64
Windows 7
Как ни кручу не могу заставить выполняться за одинаковое время.
Куда ещё можно копнуть?
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / баги или не баги
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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