powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / DESC индекс для PK и FK
41 сообщений из 41, показаны все 2 страниц
DESC индекс для PK и FK
    #38936365
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какие подводные камни могут быть, если все PK и FK в базе будут созданы с указанием использования DESC-индекса?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936366
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

нафига?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936368
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для быстрого select max(some_pk) ...
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936377
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

мне кажется, или за последнюю неделю наблюдается явный всплеск странных вопросов?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936381
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenДля быстрого select max(some_pk) ...

а это зачем?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936408
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kvd, погоди. Это пока еще нормальные вопросы :-)

Симонов Денис, самодельный репликатор, написанный за один день "на коленке", чтобы реплицировать данные между "филиалами" и центральной базой, использует такие запросы. На очень больших таблицах (порядка миллиарда записей) начинаются тормоза. А если учесть, что данные должны реплицироваться каждые 10(!) секунд, то вообще все грустно... Можно было бы написать его по-нормальному или задействовать готовый, но уже нету времени, т.к. внедрение системы должно вот-вот должно начаться. Поэтому ищу наиболее быстрые решения.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936417
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Artden!
You wrote on 14 апреля 2015 г. 19:27:36:

Artden> На очень больших таблицах (порядка миллиарда записей) начинаются
> тормоза. А если учесть, что данные должны реплицироваться каждые 10(!)
> секунд, то вообще все грустно...
в консерватории явные проблемы остойчивости цокольного этажа
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936420
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

для этого не надо во всех таблицах индекс DESC городить. В таблице логов сделал DESC индекс по этому филду где хранится код первичного ключа таблицы и всё.

P.S. Что-то мне подсказывает что репликация у тебя не очень правильно построена
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936441
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящий, требования не я придумывал. Мое дело маленькое - сделать так, чтобы работало как нужно людям. Можно время между репликациями увеличить и до минуты, но пользователи центральной базы хотят видеть, что происходит в "филиалах" как можно быстрее

Симонов Денис, да так и есть. Репликация была сделана методом, который первый пришел в голову. Таблицы логов хранят только инфу об update и delete. Информация о новых записях получается путем сравнения максимальных значений ключевых полей. В общем-то все работает без сбоев, но проверка на большой сгенерированной базе показала тормоза.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936446
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так что в итоге? Внутренности репликатора обсудили. А что насчет вопроса в первом сообщении темы?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936450
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenЭто пока еще нормальные вопросы :-)
нет, это уже ненормальные вопросы.
репликатор на select max() ? это пипец полный, а не репликатор.

Select max(id) для получения "последнего id" можно использовать только в одном известном мне случае:
когда база брякнулась, генераторы окривели, и в монопольном режиме надо восстановить значения генераторов по максимальным id-ам в таблицах.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936464
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv, я тебе объяснил ситуацию. Я со всем согласен, но из-за недостатка времени меня интересуют очень быстрые решения. И самое простое решение в том, чтобы индексы по PK были убывающие (ну и соответственно по FK тоже, т.к. об этом предупреждается в документации). В этом случае max(pk) отрабатывает очень быстро.
Так вот, повторюсь: я не получу проблемы с такими индексам?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936466
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen я тебе объяснил ситуацию. Я со всем согласен, но из-за недостатка времени меня интересуют очень быстрые решения.

ситуация - это вот это?
"требования не я придумывал. Мое дело маленькое - сделать так, чтобы работало как нужно людям."

про "быстрые решения" и репликацию через select max(id) - очень круто.

ArtDenя не получу проблемы с такими индексам?
ты получишь проблемы с max(id) при многопользовательской работе. Отлаживал репликатор, небось, в монопольном режиме?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936472
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

фигнёй ты страдаешь. У самой таблицы логов есть ID. Эта таблица одна на всех? Всё что тебе надо так это "запомнить" в базе приёмнике ID последней отработанной записи из таблицы логов.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936474
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для многопользовательской среды там все учтено. Проблем с max(id) быть не может. В каждый момент может быть только одна транзакция репликатора в базе.
Так что там с убывающими индексами для pk и fk? Может мне хоть кто-нибудь ответить?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936477
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenПроблем с max(id) быть не может.
Зря ты это думаешь. "Это я тебе, голуба, говорю как краевед." (с)

ArtDenТак что там с убывающими индексами для pk и fk? Может мне хоть кто-нибудь
ответить?
Видишь ли, до сих пор ни в одну дурную голову такая странная идея не приходила, так что ты
будешь подопытным кроликом. Вот попробуй и расскажешь остальным.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936483
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, да таблица одна на всех. И у нее есть id, максимальное значение которого сохраняется и используется репликатором. Но ней не хранятся данные о вставленных записях. Только об удаленных и измененных.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936490
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, я бы просто создал отдельный индекс, но для таблицы-миллиардника иметь два индекса по bigint-полю - это расточительство с точки зрения оптимальности импользования кэша :-)
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936518
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenСимонов Денис, да таблица одна на всех. И у нее есть id, максимальное значение которого сохраняется и используется репликатором. Но ней не хранятся данные о вставленных записях. Только об удаленных и измененных.
ну так сохраняй и о вставленных тоже. Это куда проще чем перелопачивать базу и менять направление индексов. Тем более как тебе уже сказали это будет работать не так как ты ожидаешь
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936521
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenКакие подводные камни могут бытьа что, возможны какие-то подводные камни? я как раз собираюсь в одной таблице "развернуть" PK. там, правда, всего 40 млн и запросы вида "order by PK desc"
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936522
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, ну во первых, работает это как я ожидаю. Это тебе не "эмуляция" генераторов через max(id)+1 :-)
А во вторых, у меня и так уже ожидаются две таблицы с заполнением более 500 млн. строк в год. Иметь еще одну гигантскую таблицу с логами мне не хочется. Хотя ее можно периодически подчищать, но сейчас из-за недостатка времени мне хочется иметь максимально простое решение.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936529
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fd00ch, я тоже надеюсь, что их нет. Но ответы в этом форуме заставили призадуматься... :-)
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936530
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

тупо заведи себе таблицу в БД приёмнике и пиши в неё последней обработанный id по каждой таблице БД источника в пачке переданных данных.

create table t (
tablename char(31) not null,
source_db char(31) not null,
last_id bigint
)
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936531
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenработает это как я ожидаю. Это тебе не "эмуляция" генераторов через max(id)+1
:-)
Вообще-то разницы с генерацией в данном случае нет. А "работает" оно только потому, что ты
тестируешь в монопольном режиме.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936535
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис, уже думал об этом. Это я сделаю в случае, если будут косяки или тормоза с убывающими индексами по pk.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936537
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, нет. max(id) не используется для генерации чего либо. Это всего-лишь способ получения информации для репликатора. И тестируется все это в многопользовательской среде. Если у тебя есть конкретные идеи, как это может не сработать - сообщай, буду вникать и думать )
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936538
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

ты бы лучше описал схему по которой у тебя будет работать твоя репликации хотя бы на примере одной таблицы, тебе бы ответили где здесь зарыты грабли. А так толком не понятно что ты собираешься там делать
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936543
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenЕсли у тебя есть конкретные идеи, как это может не сработать - сообщай, буду
вникать и думать )
"Нам выгоднее если они сами сначала попробуют его починить." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936643
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗря ты это думаешь. "Это я тебе, голуба, говорю как краевед." (с)

Супер

Как у вас интересно
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936650
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эх. Тема ушла далеко в оффтоп. Особенно радуют советы про гарантированные проблемы с max(id), с учетом того, что советчики не знают как оно там устроено. Сегодня попробую сменить направление у индексов для pk и fk.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936671
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,попробуй лучше IBReplicator или опиши получше схему твоей репликации.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38936931
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenmax(id), с учетом того, что советчики не знают как оно там устроено.
ну и как оно там устроено?
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38937560
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv, максимально просто )
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38937570
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только что попробовал pk и fk с убывающими индексами. Ничего не упало, диск с: не отформатировался, а за окном не пошёл зелёный снег, как можно было бы ожидать из ответов в этой теме... )
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38937721
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenНичего не упало, диск с: не отформатировался, а за окном не пошёл зелёный снег, как можно было бы ожидать из ответов в этой теме
это ты почему-то ожидал. никто тут ничего такого не имел в виду.
для проверки пк и фк направление индекса не имеет значения. если бы ты хоть что-то про b-trees читал, ты бы тоже знал.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38937866
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen, доллар стал ниже 50
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38938039
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Fd00ch!
You wrote on 16 апреля 2015 г. 10:54:39:

Fd00ch> ArtDen, доллар стал ниже 50
сломал таки картину мирозданья, сцуко...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38938151
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База с pk и fk с убывающими индексами за ночь немного заполнилась тестовыми данными. В итоге получилось не то, что я ожидал. Для примера запрос
Код: sql
1.
select max(pk) from some_big_table where pk between 20000000000 and 24999999999


(где 20000000000-24999999999 - диапазон pk, в котором создаёт свои записи филиал №2) на "непрогретой" базе выполняется 12 минут :( На прогретой- 0.3 сек, но это всё равно медленно. А ведь в таблице только 100 млн записей, что в 10 раз меньше наполнения за год.

В итоге переделал наподобие того, как советовал Симонов Денис:
create table t (
tablename char(31) not null,
source_db char(31) not null,
last_id bigint
)

Наверное на этом пока и успокоюсь :)
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38938167
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

а чего ты хотел то. Этот запрос выполнится быстро только на тройке.
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38938280
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин, отказался от desc-индексов для pk в базе и рубль начал падать. Звиняйте )))
...
Рейтинг: 0 / 0
DESC индекс для PK и FK
    #38938296
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

лепи обратно
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / DESC индекс для PK и FK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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