powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Секционированный индекс
14 сообщений из 14, страница 1 из 1
Секционированный индекс
    #39841867
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня всем.

Есть глобальный секционированный индекс. Примерно такой:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE INDEX IDX_DOC
ON DOCS(DOC_TYPE, DOC_NUMBER,DOC_DATE, STATE ...)
GLOBAL PARTITION BY HASH (DOC_TYPE)
( PARTITION P1 TABLESPACE USERS,
  PARTITION P2 TABLESPACE USERS,
  PARTITION P3 TABLESPACE USERS,
  PARTITION P4 TABLESPACE USERS
)
PARALLEL LOGGING;


В таблице вариантов значения поля DOC_TYPE всего 4 штуки.
Причем одного значения ~50% записей
Второго ~ 30%
Остальное делится между оставшимися двумя

Возможно ли как-то увидеть как распределились записи по партициям индекса?
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841877
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да так и распределились -- если всего 4 возможных значения, то и всего 4 хэш-значения
И радуйся, если они легли в разные секции, а то в самое большое еще и соседнее приляжет.

Если оно всегда будет известное кол-во значений, то, наверное, лучше использовать LIST+HASH
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841881
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровИ радуйся, если они легли в разные секции
Так мне, собственно, и хотелось бы удостовериться, что они именно так разлеглись.
лучше использовать LIST+HASH
А можно поподробнее, о чем речь?
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841890
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle Возможно ли как-то увидеть как распределились записи по партициям индекса?Написать запрос с предикатом и посмотреть в плане, из какой секции идет выборка.
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841891
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelleлучше использовать LIST+HASHА можно поподробнее, о чем речь?Cейчас уже есть by list automatic
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841896
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MigelleВячеслав ЛюбомудровИ радуйся, если они легли в разные секции
Так мне, собственно, и хотелось бы удостовериться, что они именно так разлеглись.
select doc_type, count(*) from docs partition(p1);
Migelleлучше использовать LIST+HASH
А можно поподробнее, о чем речь?Составное секционирование: partition by list subpartition by hash
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841898
Фотография SeaGate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Migelle Возможно ли как-то увидеть как распределились записи по партициям индекса?
sys_op_lbid

Код: plsql
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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
SQL> create table docs(
  2    doc_type char(1),
  3    doc_number int,
  4    doc_date date,
  5    state char(1));

Table created.

SQL>
SQL> insert into docs(doc_type) values ('A');

1 row created.

SQL> insert into docs(doc_type) values ('C');

1 row created.

SQL>
SQL> CREATE INDEX IDX_DOC
  2  ON DOCS(DOC_TYPE, DOC_NUMBER,DOC_DATE, STATE)
  3  GLOBAL PARTITION BY HASH (DOC_TYPE)
  4  ( PARTITION P1,
  5    PARTITION P2,
  6    PARTITION P3,
  7    PARTITION P4
  8  )
  9  PARALLEL LOGGING;

Index created.

SQL>
SQL> col object_id old_v object_id
SQL>
SQL> select object_id
  2    from obj
  3   where object_name = 'IDX_DOC'
  4     and object_type = 'INDEX';

 OBJECT_ID
----------
    135050

SQL>
SQL> col doc_type for a8
SQL> col subobject_name for a14
SQL>
SQL> select d.doc_type,
  2         o.subobject_name
  3    from (select /*+ no_merge index(docs (doc_type))*/
  4                 doc_type,
  5                 dbms_rowid.rowid_object(sys_op_lbid(&object_id., 'L', rowid)) data_object_id
  6            from docs
  7           where doc_type in ('A', 'C')) d,
  8         obj o
  9   where o.data_object_id = d.data_object_id;
old   5:                dbms_rowid.rowid_object(sys_op_lbid(&object_id., 'L', rowid)) data_object_id
new   5:                dbms_rowid.rowid_object(sys_op_lbid(    135050, 'L', rowid)) data_object_id

DOC_TYPE SUBOBJECT_NAME
-------- --------------
A        P3
C        P1

...
Рейтинг: 0 / 0
Секционированный индекс
    #39841945
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKadCейчас уже есть by list automatic
Понял. К сожалению это относится уже к 12+, а у меня тут 10.2 :(
И, как я понимаю, только к таблицам, индекс так секционировать не получится?

SeaGatesys_op_lbid
Спасибо. Вроде то что нужно. Отправил машину считать...
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841978
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровИ радуйся, если они легли в разные секции, а то в самое большое еще и соседнее приляжет.
Теперь я понял, о чем была фраза "радуйтесь": два самых больших значения у меня легли в одну партицию.

Я правильно понимаю, заставить их разлечься по разным возможности нет?
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841981
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через HASH-секционирование, насколько я понимаю, нет
Но почитай таки про LIST (возможно +HASH)
Или сделай на основании 2 полей, наиболее часть появляющихся в предикатах запросов

И вообще -- любое секционирование расчитывай по годности именно из запросов
...
Рейтинг: 0 / 0
Секционированный индекс
    #39841982
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом отношении и у HASH, и у LIST секционирования есть определенный недостаток -- они срабатывает только по равенству
...
Рейтинг: 0 / 0
Секционированный индекс
    #39842474
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровЧерез HASH-секционирование, насколько я понимаю, нет
Можно изменить количество секций.
...
Рейтинг: 0 / 0
Секционированный индекс
    #39842522
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
MigelleТеперь я понял, о чем была фраза "радуйтесь": два самых больших значения у меня легли в одну партицию.

Я правильно понимаю, заставить их разлечься по разным возможности нет?дык надо планировать заранее:
1. https://jonathanlewis.wordpress.com/2009/09/21/hash-partitions-2/
2. https://jonathanlewis.wordpress.com/2009/11/21/ora_hash-function/
...
Рейтинг: 0 / 0
Секционированный индекс
    #39842550
Migelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymousМожно изменить количество секций.Я пытался сделать десяток секций - не помогло.
Вячеслав ЛюбомудровНо почитай таки про LIST Я прочитал уже. Но у меня таблица не секционирована, а LIST, насколько я понял, возможен только для таблицы. А хотелось обойтись индексом.
xtenderдык надо планировать заранее:Знать бы где упасть....
Хорошее чтиво, спасибо.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Секционированный индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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