Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Какие подводные камни могут быть, если все PK и FK в базе будут созданы с указанием использования DESC-индекса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 18:25 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, нафига? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 18:25 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Для быстрого select max(some_pk) ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 18:26 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, мне кажется, или за последнюю неделю наблюдается явный всплеск странных вопросов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 18:37 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenДля быстрого select max(some_pk) ... а это зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 18:43 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
kvd, погоди. Это пока еще нормальные вопросы :-) Симонов Денис, самодельный репликатор, написанный за один день "на коленке", чтобы реплицировать данные между "филиалами" и центральной базой, использует такие запросы. На очень больших таблицах (порядка миллиарда записей) начинаются тормоза. А если учесть, что данные должны реплицироваться каждые 10(!) секунд, то вообще все грустно... Можно было бы написать его по-нормальному или задействовать готовый, но уже нету времени, т.к. внедрение системы должно вот-вот должно начаться. Поэтому ищу наиболее быстрые решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:22 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Hello, Artden! You wrote on 14 апреля 2015 г. 19:27:36: Artden> На очень больших таблицах (порядка миллиарда записей) начинаются > тормоза. А если учесть, что данные должны реплицироваться каждые 10(!) > секунд, то вообще все грустно... в консерватории явные проблемы остойчивости цокольного этажа Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:28 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, для этого не надо во всех таблицах индекс DESC городить. В таблице логов сделал DESC индекс по этому филду где хранится код первичного ключа таблицы и всё. P.S. Что-то мне подсказывает что репликация у тебя не очень правильно построена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:30 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, требования не я придумывал. Мое дело маленькое - сделать так, чтобы работало как нужно людям. Можно время между репликациями увеличить и до минуты, но пользователи центральной базы хотят видеть, что происходит в "филиалах" как можно быстрее Симонов Денис, да так и есть. Репликация была сделана методом, который первый пришел в голову. Таблицы логов хранят только инфу об update и delete. Информация о новых записях получается путем сравнения максимальных значений ключевых полей. В общем-то все работает без сбоев, но проверка на большой сгенерированной базе показала тормоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:51 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Так что в итоге? Внутренности репликатора обсудили. А что насчет вопроса в первом сообщении темы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:53 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenЭто пока еще нормальные вопросы :-) нет, это уже ненормальные вопросы. репликатор на select max() ? это пипец полный, а не репликатор. Select max(id) для получения "последнего id" можно использовать только в одном известном мне случае: когда база брякнулась, генераторы окривели, и в монопольном режиме надо восстановить значения генераторов по максимальным id-ам в таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 19:59 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
kdv, я тебе объяснил ситуацию. Я со всем согласен, но из-за недостатка времени меня интересуют очень быстрые решения. И самое простое решение в том, чтобы индексы по PK были убывающие (ну и соответственно по FK тоже, т.к. об этом предупреждается в документации). В этом случае max(pk) отрабатывает очень быстро. Так вот, повторюсь: я не получу проблемы с такими индексам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:08 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen я тебе объяснил ситуацию. Я со всем согласен, но из-за недостатка времени меня интересуют очень быстрые решения. ситуация - это вот это? "требования не я придумывал. Мое дело маленькое - сделать так, чтобы работало как нужно людям." про "быстрые решения" и репликацию через select max(id) - очень круто. ArtDenя не получу проблемы с такими индексам? ты получишь проблемы с max(id) при многопользовательской работе. Отлаживал репликатор, небось, в монопольном режиме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:11 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, фигнёй ты страдаешь. У самой таблицы логов есть ID. Эта таблица одна на всех? Всё что тебе надо так это "запомнить" в базе приёмнике ID последней отработанной записи из таблицы логов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:17 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Для многопользовательской среды там все учтено. Проблем с max(id) быть не может. В каждый момент может быть только одна транзакция репликатора в базе. Так что там с убывающими индексами для pk и fk? Может мне хоть кто-нибудь ответить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:20 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenПроблем с max(id) быть не может. Зря ты это думаешь. "Это я тебе, голуба, говорю как краевед." (с) ArtDenТак что там с убывающими индексами для pk и fk? Может мне хоть кто-нибудь ответить? Видишь ли, до сих пор ни в одну дурную голову такая странная идея не приходила, так что ты будешь подопытным кроликом. Вот попробуй и расскажешь остальным. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:25 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да таблица одна на всех. И у нее есть id, максимальное значение которого сохраняется и используется репликатором. Но ней не хранятся данные о вставленных записях. Только об удаленных и измененных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:28 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, я бы просто создал отдельный индекс, но для таблицы-миллиардника иметь два индекса по bigint-полю - это расточительство с точки зрения оптимальности импользования кэша :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 20:39 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenСимонов Денис, да таблица одна на всех. И у нее есть id, максимальное значение которого сохраняется и используется репликатором. Но ней не хранятся данные о вставленных записях. Только об удаленных и измененных. ну так сохраняй и о вставленных тоже. Это куда проще чем перелопачивать базу и менять направление индексов. Тем более как тебе уже сказали это будет работать не так как ты ожидаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 21:43 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenКакие подводные камни могут бытьа что, возможны какие-то подводные камни? я как раз собираюсь в одной таблице "развернуть" PK. там, правда, всего 40 млн и запросы вида "order by PK desc" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 21:54 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, ну во первых, работает это как я ожидаю. Это тебе не "эмуляция" генераторов через max(id)+1 :-) А во вторых, у меня и так уже ожидаются две таблицы с заполнением более 500 млн. строк в год. Иметь еще одну гигантскую таблицу с логами мне не хочется. Хотя ее можно периодически подчищать, но сейчас из-за недостатка времени мне хочется иметь максимально простое решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 21:54 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
fd00ch, я тоже надеюсь, что их нет. Но ответы в этом форуме заставили призадуматься... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:00 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, тупо заведи себе таблицу в БД приёмнике и пиши в неё последней обработанный id по каждой таблице БД источника в пачке переданных данных. create table t ( tablename char(31) not null, source_db char(31) not null, last_id bigint ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:02 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenработает это как я ожидаю. Это тебе не "эмуляция" генераторов через max(id)+1 :-) Вообще-то разницы с генерацией в данном случае нет. А "работает" оно только потому, что ты тестируешь в монопольном режиме. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:02 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, уже думал об этом. Это я сделаю в случае, если будут косяки или тормоза с убывающими индексами по pk. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:07 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, нет. max(id) не используется для генерации чего либо. Это всего-лишь способ получения информации для репликатора. И тестируется все это в многопользовательской среде. Если у тебя есть конкретные идеи, как это может не сработать - сообщай, буду вникать и думать ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:11 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, ты бы лучше описал схему по которой у тебя будет работать твоя репликации хотя бы на примере одной таблицы, тебе бы ответили где здесь зарыты грабли. А так толком не понятно что ты собираешься там делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:16 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenЕсли у тебя есть конкретные идеи, как это может не сработать - сообщай, буду вникать и думать ) "Нам выгоднее если они сами сначала попробуют его починить." (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2015, 22:26 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЗря ты это думаешь. "Это я тебе, голуба, говорю как краевед." (с) Супер Как у вас интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 04:59 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Эх. Тема ушла далеко в оффтоп. Особенно радуют советы про гарантированные проблемы с max(id), с учетом того, что советчики не знают как оно там устроено. Сегодня попробую сменить направление у индексов для pk и fk. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 06:15 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen,попробуй лучше IBReplicator или опиши получше схему твоей репликации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 07:46 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenmax(id), с учетом того, что советчики не знают как оно там устроено. ну и как оно там устроено? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 12:09 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
kdv, максимально просто ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 17:57 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Только что попробовал pk и fk с убывающими индексами. Ничего не упало, диск с: не отформатировался, а за окном не пошёл зелёный снег, как можно было бы ожидать из ответов в этой теме... ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 18:00 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDenНичего не упало, диск с: не отформатировался, а за окном не пошёл зелёный снег, как можно было бы ожидать из ответов в этой теме это ты почему-то ожидал. никто тут ничего такого не имел в виду. для проверки пк и фк направление индекса не имеет значения. если бы ты хоть что-то про b-trees читал, ты бы тоже знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2015, 20:54 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, доллар стал ниже 50 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 00:48 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Hello, Fd00ch! You wrote on 16 апреля 2015 г. 10:54:39: Fd00ch> ArtDen, доллар стал ниже 50 сломал таки картину мирозданья, сцуко... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 10:54 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
База с pk и fk с убывающими индексами за ночь немного заполнилась тестовыми данными. В итоге получилось не то, что я ожидал. Для примера запрос Код: sql 1. (где 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 ) Наверное на этом пока и успокоюсь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:11 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
ArtDen, а чего ты хотел то. Этот запрос выполнится быстро только на тройке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 12:22 |
|
||
|
DESC индекс для PK и FK
|
|||
|---|---|---|---|
|
#18+
Вот блин, отказался от desc-индексов для pk в базе и рубль начал падать. Звиняйте ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2015, 13:57 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1562908]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 164ms |

| 0 / 0 |
