powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
25 сообщений из 111, страница 2 из 5
Нарушение уникальности PK
    #39195487
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryПохоже, не догоняешь.
Да нет, тут есть элемент везения: заменить одну несжимаемую последовательность на любую
другую можно весьма легко. В отличии от архива, БД использует примитивный RLE и
контрольные суммы там отсутствуют от слова "совсем".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195492
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 18 марта 2016 г. 15:21:48:

Dimitry Sibiryakov> Да нет, тут есть элемент везения: заменить одну несжимаемую последовательность на любую
> другую можно весьма легко. В отличии от архива, БД использует примитивный RLE и
> контрольные суммы там отсутствуют от слова "совсем".текстовое представление GUID жмётся даже RLE
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195521
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийтекстовое представление GUID жмётся даже RLE
Продемонстрируешь как? А то у меня оно что-то не желает...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195524
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПересоздание индекса помогло:
а типа, alter index active - не помогло? Тогда и пересоздание индекса "не помогло". Потому что это одно и то же.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195527
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 18 марта 2016 г. 15:46:57:

Dimitry Sibiryakov> Продемонстрируешь как? А то у меня оно что-то не желает...
а как у тебя не получается?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195532
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Kdv!
You wrote on 18 марта 2016 г. 15:47:32:

Kdv> а типа, alter index active - не помогло?Дим, у него ж PK

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195537
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа как у тебя не получается?
Вот так у меня не получается:
Код: sql
1.
RPAD('', длина поля, UUID_TO_CHAR(GEN_UUID()))


gstat упорно выдаёт, что средний размер сжатой записи на странице больше, чем это
единственное поле в таблице.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195551
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийДим, у него ж PK
ты знаешь, я много лет верил, что перестроить индекс без удаления можно только alter index inactive/active. Естественно, что inactive для индексов по констрейнтам не работает.
А потом вышел dimitr, и заявил, что inactive нафиг не нужен, по active оно само. Я проверил - работает!
Только Полесову я же специально написал, COMMIT! Он, видать, не знает, что индексы строятся или перестраиваются по коммиту, а не по ddl.

p.s. пример
alter index rdb$primary161 active
Prepare time = 0ms
Execute time = 0ms

commit
Transaction commited... (3167 ms)
три секунды - миллион записей.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195558
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvPolesovПересоздание индекса помогло:
а типа, alter index active - не помогло? Тогда и пересоздание индекса "не помогло". Потому что это одно и то же.
Между удалением индекса и его созданием было удаление дубликата записи.
Все таки дубликат записи был - без PK запрос тоже выдал 2 записи.
Так совпало - был дубликат записи и ошибка индексной страницы.

P.S. я уже говорил, в момент занесения данных в БД были аппаратные проблемы с сервером. Но можно только предполагать...
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195561
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvТолько Полесову я же специально написал, COMMIT!
Я делал COMMIT - не помогло. Видимо, дело в наличии физического дубликата записи (писал об этом выше)
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195572
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если gfix говорит
Код: powershell
1.
2.
Summary of validation errors 
	Number of index page errors	: 2


как определить, какие именно индексы битые?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195579
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 18 марта 2016 г. 16:46:09:

Dimitry Sibiryakov> gstat упорно выдаёт, что средний размер сжатой записи на странице больше, чем это
> единственное поле в таблице.таки да.
беру свои слова обратно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195580
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovкакие именно индексы битые?У вас, я так понимаю, 2.5.4 ? Тогда так:
Код: plaintext
%fb254_home%\bin\fbsvcmgr localhost:service_mgr user sysdba password masterkey action_validate dbname путь_к_базе\имя_базы.fdb
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195611
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovkdvТолько Полесову я же специально написал, COMMIT!
Я делал COMMIT - не помогло. Видимо, дело в наличии физического дубликата записи (писал об этом выше)Индекс не построится, если есть дубликаты
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195612
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovЕсли gfix говорит
Код: powershell
1.
2.
Summary of validation errors 
	Number of index page errors	: 2



как определить, какие именно индексы битые?Читать firebird.log
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195613
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид, спасибо, все получилось.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195621
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИндекс не построится, если есть дубликаты
Правильно ли я понимаю, что если есть дубликаты, то
Код: plsql
1.
alter index MY_INDEX active

выдаст ошибку?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195680
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov не помогло
не помогло - это как? если у тебя на диске есть 2 записи по индексируемому ПК столбцу, то alter index active по коммиту выдаст ошибку, что индекс не может быть создан, т.к. есть дубликаты.
Если же индекс был создан без ошибки, это значит, что данные, находящиеся на диске, и то, что ты видишь - не одно и то же.
То есть, для индекса никаких дубликатов нет. А при выводе ты видишь "дубликаты" только для конкретного формата вывода - это означает, что хранимые данные и выводимые данные отличаются.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195681
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПравильно ли я понимаю, что если есть дубликаты, то
ё-мое.
alter index inactive/active (или просто active) это в отношении содержимого эквивалент пары drop index / create index, только с сохранением информации об индексе в системных таблицах. "Неактивный" индекс есть только в rdb$indices и rdb$index_segments, страниц индекса в базе нет.
А при active или create индекс строится, с нуля, совершенно одинаковым в обоих случаях способом. И ошибку про дубликаты (и другое) будет выдавать тоже одинаково.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195685
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

чего я вообще дурака валяю
http://www.ibase.ru/files/firebird/Firebird_2_5_Language_Reference_RUS.pdf
стр 118 и далее (alter index).
все написано РУССКИМ языком, и даже специальная пометка на тему active в отношении pk, fk и unique есть (как я понимаю, благодаря мне).
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195709
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovИли FB при записи данных их сжимает, а при чтении - разжимает?Да. Сжимается целиком строка, а при чтении разжимается.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195722
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvPolesov не помогло
не помогло - это как? если у тебя на диске есть 2 записи по индексируемому ПК столбцу, то alter index active по коммиту выдаст ошибку, что индекс не может быть создан, т.к. есть дубликаты.
Если же индекс был создан без ошибки, это значит, что данные, находящиеся на диске, и то, что ты видишь - не одно и то же.
То есть, для индекса никаких дубликатов нет. А при выводе ты видишь "дубликаты" только для конкретного формата вывода - это означает, что хранимые данные и выводимые данные отличаются.

Вот сейчас проделаю все операции на копии БД, содержащей ошибку:

GFIX:
Код: powershell
1.
2.
Summary of validation errors 
	Number of index page errors	: 1



Запрос:
Код: plsql
1.
2.
3.
4.
select ID, count(*)
  from T
 group by ID
having count(*) > 1

Результат: 123, 2

Запрос:
Код: plsql
1.
2.
3.
select *
  from T
 where ID = 123

Результат: 2 абсолютно идентичных записи

Выполняю:
Код: powershell
1.
2.
3.
SQL> alter index PK_T active;
SQL> commit;
SQL>

Имя индекса совпадает с именем PK.
Вроде бы тут на перестроение индекса должна быть ругань?

Запрос:
Код: plsql
1.
2.
3.
select *
  from T
 where ID = 123

Результат: 2 абсолютно идентичных записи

GFIX:
Код: powershell
1.
2.
Summary of validation errors 
	Number of index page errors	: 1



Что я делаю не так?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195725
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryСжимается целиком строка, а при чтении разжимается.

Тогда как объяснить, что мне в файле БД обычном фар-ом удалось найти занчение текстового гуида?
Более того, после изменения в текстовом значении поля непосредственно в файле БД эти изменения стали видны при SQL-запросе.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195728
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Polesov!
You wrote on 18 марта 2016 г. 19:08:19:

Polesov> Тогда как объяснить, что мне в файле БД обычном фар-ом удалось найти занчение текстового гуида?
> Более того, после изменения в текстовом значении поля непосредственно в файле БД эти изменения стали видны при SQL-запросе.
вполне возможно то что ты пишешь.
проверено экспериментально.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39195731
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovhvladИндекс не построится, если есть дубликаты
Правильно ли я понимаю, что если есть дубликаты, то
Код: plsql
1.
alter index MY_INDEX active


выдаст ошибку?Нет. Ошибку выдаст commit.
Правда, если выполнять это в isql, то он сделает коммит сам (если ему явно не запретить)
и будет казаться, что ошибку выдал ALTER
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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