Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB-3: что такое clustering factor в выводе gstat -r ? / 16 сообщений из 16, страница 1 из 1
25.10.2013, 14:15:38
    #38441308
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
hi all

в результате трёхдневных издевательств над некоторой базейкой с pagesize = 4096 по ней получена следующая статистика:
240 rows
Код: plaintext
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.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
     1
     2  Database "/var/db/fb30/idx_under_load_test.fdb"
     3  Database header page information:
     4          Flags                   0
     5          Generation              8361536
     6          System Change Number    0
     7          Page size               4096
     8          ODS version             12.0
     9          Oldest transaction      4515466
    10          Oldest active           8350383
    11          Oldest snapshot         8350383
    12          Next transaction        8355927
    13          Sequence number         0
    14          Next attachment ID      37046
    15          Implementation          HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc
    16          Shadow count            0
    17          Page buffers            0
    18          Next header page        0
    19          Database dialect        3
    20          Creation date           Sep 20, 2013 19:45:47
    21          Attributes
    22
    23      Variable header data:
    24          Sweep interval:         0
    25          *END*
    26
    27
    28  Database file sequence:
    29  File /var/db/fb30/idx_under_load_test.fdb is the only file
    30
    31  Analyzing database pages ...
    32  GTT_TMP (130)
    33      Primary pointer page: 226, Index root page: 227
    34      Total formats: 1, used formats: 0
    35      Average record length: 0.00, total records: 0
    36      Average version length: 0.00, total versions: 0, max versions: 0
    37      Average fragment length: 0.00, total fragments: 0, max fragments: 0
    38      Average unpacked length: 0.00, compression ratio: 0.00
    39      Pointer pages: 1, data page slots: 0
    40      Data pages: 0, average fill: 0%
    41      Primary pages: 0, full pages: 0, swept pages: 0
    42      Fill distribution:
    43           0 - 19% = 0
    44          20 - 39% = 0
    45          40 - 59% = 0
    46          60 - 79% = 0
    47          80 - 99% = 0
    48
    49  LOG_ACTIVITY (129)
    50      Primary pointer page: 224, Index root page: 225
    51      Total formats: 1, used formats: 1
    52      Average record length: 33.00, total records: 6634025
    53      Average version length: 0.00, total versions: 0, max versions: 0
    54      Average fragment length: 0.00, total fragments: 0, max fragments: 0
    55      Average unpacked length: 36.00, compression ratio: 1.09
    56      Pointer pages: 134, data page slots: 120619
    57      Data pages: 120619, average fill: 68%
    58      Primary pages: 120619, full pages: 120618, swept pages: 0
    59      Fill distribution:
    60           0 - 19% = 0
    61          20 - 39% = 0
    62          40 - 59% = 1
    63          60 - 79% = 120618
    64          80 - 99% = 0
    65
    66      Index LOG_ACT_BEG_END (1)
    67          Root page: 150882, depth: 3, leaf buckets: 8648, nodes: 6634025
    68          Average node length: 4.99, total dup: 6634007, max dup: 6604334
    69          Average key length: 2.01, compression ratio: 4.47
    70          Average prefix length: 8.99, average data length: 0.01
    71          Clustering factor: 146826, ratio: 0.02
    72          Fill distribution:
    73               0 - 19% = 47
    74              20 - 39% = 0
    75              40 - 59% = 771
    76              60 - 79% = 2
    77              80 - 99% = 7828
    78
    79      Index PK_LOG_ACTIVITY (0)
    80          Root page: 114616, depth: 3, leaf buckets: 9984, nodes: 6634025
    81          Average node length: 5.99, total dup: 0, max dup: 0
    82          Average key length: 3.01, compression ratio: 1.47
    83          Average prefix length: 3.42, average data length: 1.01
    84          Clustering factor: 139321, ratio: 0.02
    85          Fill distribution:
    86               0 - 19% = 67
    87              20 - 39% = 1
    88              40 - 59% = 33
    89              60 - 79% = 0
    90              80 - 99% = 9883
    91
    92  LOG_CONNECT_CALIBR (134)
    93      Primary pointer page: 228, Index root page: 229
    94      Total formats: 2, used formats: 1
    95      Average record length: 37.98, total records: 14294
    96      Average version length: 0.00, total versions: 0, max versions: 0
    97      Average fragment length: 0.00, total fragments: 0, max fragments: 0
    98      Average unpacked length: 69.00, compression ratio: 1.82
    99      Pointer pages: 1, data page slots: 275
   100      Data pages: 275, average fill: 70%
   101      Primary pages: 275, full pages: 274, swept pages: 0
   102      Fill distribution:
   103           0 - 19% = 0
   104          20 - 39% = 0
   105          40 - 59% = 0
   106          60 - 79% = 275
   107          80 - 99% = 0
   108
   109      Index LOG_CONNECT_CALIBR_DTS (0)
   110          Root page: 1647799, depth: 2, leaf buckets: 29, nodes: 14294
   111          Average node length: 7.95, total dup: 0, max dup: 0
   112          Average key length: 6.01, compression ratio: 1.33
   113          Average prefix length: 4.98, average data length: 3.02
   114          Clustering factor: 275, ratio: 0.02
   115          Fill distribution:
   116               0 - 19% = 0
   117              20 - 39% = 1
   118              40 - 59% = 0
   119              60 - 79% = 0
   120              80 - 99% = 28
   121
   122  TMP (128)
   123      Primary pointer page: 222, Index root page: 223
   124      Total formats: 1, used formats: 1
   125      Average record length: 64.92, total records: 50422696
   126      Average version length: 66.05, total versions: 3830803, max versions: 2
   127      Average fragment length: 2.13, total fragments: 6314, max fragments: 1
   128      Average unpacked length: 72.00, compression ratio: 1.11
   129      Pointer pages: 1566, data page slots: 1414022
   130      Data pages: 1414003, average fill: 77%
   131      Primary pages: 1375423, full pages: 1373744, swept pages: 100386
   132      Fill distribution:
   133           0 - 19% = 32729
   134          20 - 39% = 2558
   135          40 - 59% = 2205
   136          60 - 79% = 1207061
   137          80 - 99% = 169450
   138
   139      Index PK_TMP (1)
   140          Root page: 756595, depth: 4, leaf buckets: 232528, nodes: 50422773
   141          Average node length: 11.90, total dup: 0, max dup: 0
   142          Average key length: 8.11, compression ratio: 1.11
   143          Average prefix length: 3.89, average data length: 5.11
   144          Clustering factor: 6485823, ratio: 0.13
   145          Fill distribution:
   146               0 - 19% = 24610
   147              20 - 39% = 5035
   148              40 - 59% = 107043
   149              60 - 79% = 9116
   150              80 - 99% = 86724
   151
   152      Index TMP_B11 (5)
   153          Root page: 2857892, depth: 4, leaf buckets: 123814, nodes: 50524606
   154          Average node length: 5.80, total dup: 50524604, max dup: 25270388
   155          Average key length: 2.00, compression ratio: 0.75
   156          Average prefix length: 1.50, average data length: 0.00
   157          Clustering factor: 2732168, ratio: 0.05
   158          Fill distribution:
   159               0 - 19% = 1883
   160              20 - 39% = 330
   161              40 - 59% = 105466
   162              60 - 79% = 6722
   163              80 - 99% = 9413
   164
   165      Index TMP_DT1_DESC (6)
   166          Root page: 45976, depth: 3, leaf buckets: 124260, nodes: 52096071
   167          Average node length: 5.81, total dup: 52096068, max dup: 47597402
   168          Average key length: 2.02, compression ratio: 4.45
   169          Average prefix length: 8.98, average data length: 0.02
   170          Clustering factor: 1583174, ratio: 0.03
   171          Fill distribution:
   172               0 - 19% = 3935
   173              20 - 39% = 3694
   174              40 - 59% = 86925
   175              60 - 79% = 10736
   176              80 - 99% = 18970
   177
   178      Index TMP_F07_UNQ (2)
   179          Root page: 297832, depth: 4, leaf buckets: 320671, nodes: 50422831
   180          Average node length: 10.91, total dup: 9, max dup: 1
   181          Average key length: 7.11, compression ratio: 1.12
   182          Average prefix length: 3.88, average data length: 4.12
   183          Clustering factor: 6485860, ratio: 0.13
   184          Fill distribution:
   185               0 - 19% = 302
   186              20 - 39% = 14636
   187              40 - 59% = 301827
   188              60 - 79% = 3365
   189              80 - 99% = 541
   190
   191      Index TMP_F08_UNQ (3)
   192          Root page: 812035, depth: 4, leaf buckets: 203166, nodes: 50422877
   193          Average node length: 6.89, total dup: 0, max dup: 0
   194          Average key length: 3.10, compression ratio: 1.58
   195          Average prefix length: 3.89, average data length: 1.02
   196          Clustering factor: 6485862, ratio: 0.13
   197          Fill distribution:
   198               0 - 19% = 106
   199              20 - 39% = 14551
   200              40 - 59% = 185224
   201              60 - 79% = 3040
   202              80 - 99% = 245
   203
   204      Index TMP_ID_DESC (0)
   205          Root page: 246272, depth: 4, leaf buckets: 350570, nodes: 50422816
   206          Average node length: 11.91, total dup: 0, max dup: 0
   207          Average key length: 8.11, compression ratio: 1.11
   208          Average prefix length: 3.88, average data length: 5.12
   209          Clustering factor: 6485840, ratio: 0.13
   210          Fill distribution:
   211               0 - 19% = 391
   212              20 - 39% = 15259
   213              40 - 59% = 331054
   214              60 - 79% = 3288
   215              80 - 99% = 578
   216
   217      Index TMP_S09 (4)
   218          Root page: 3163827, depth: 4, leaf buckets: 117080, nodes: 50424700
   219          Average node length: 5.80, total dup: 50424698, max dup: 50176380
   220          Average key length: 2.00, compression ratio: 1.00
   221          Average prefix length: 1.99, average data length: 0.00
   222          Clustering factor: 1602584, ratio: 0.03
   223          Fill distribution:
   224               0 - 19% = 3882
   225              20 - 39% = 178
   226              40 - 59% = 88212
   227              60 - 79% = 5131
   228              80 - 99% = 19677
   229
   230      Index TMP_S10_DESC (7)
   231          Root page: 2856537, depth: 4, leaf buckets: 121865, nodes: 50422614
   232          Average node length: 5.80, total dup: 50422604, max dup: 5045952
   233          Average key length: 2.00, compression ratio: 0.90
   234          Average prefix length: 1.80, average data length: 0.00
   235          Clustering factor: 13309183, ratio: 0.26
   236          Fill distribution:
   237               0 - 19% = 383
   238              20 - 39% = 174
   239              40 - 59% = 99873
   240              60 - 79% = 16075
   241              80 - 99% = 5360
   242


Вопрос в следующем. Вот есть табличка TMP и у ней - первичный ключ:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   122  TMP (128)
   123      Primary pointer page: 222, Index root page: 223
   124      Total formats: 1, used formats: 1
   125      Average record length: 64.92, total records:  50422696 
   ...
   139      Index PK_TMP (1)
   140          Root page: 756595, depth: 4, leaf buckets: 232528, nodes: 50422773
   141          Average node length: 11.90, total dup: 0, max dup: 0
   142          Average key length: 8.11, compression ratio: 1.11
   143          Average prefix length: 3.89, average data length: 5.11
   144          Clustering factor:  6485823 , ratio: 0.13

Как понимать выделенное значение ? Светило Оракла (Том Кайт) говорит , чтоавторindex clustering factor is a measure of how many I/Os the database would perform if it were to read every row in that table via the index in index order.
Хотелось бы услышать ответ наших Источников Света: что есть 6485823 в вышеприведенной статистике ?
...
Рейтинг: 0 / 0
25.10.2013, 14:21:06
    #38441318
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
Таблоид,

насколько я понимаю это оценка соответствия порядка расположения страниц на диске порядку который подразумевается индексом. Теоретически должно быть использовано при оценки навигации по индексу, но вроде бы пока это не учитывается оптимизатором. Более точно может только dimitr или hvlad сказать
...
Рейтинг: 0 / 0
25.10.2013, 14:25:25
    #38441327
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
Симонов Дениснасколько я понимаю это оценка соответствия порядка расположения страниц на диске порядку который подразумевается индексом.Это я тоже понимаю, но как именно цифирки эти вычисляются гстатом - вот что интересно...
...
Рейтинг: 0 / 0
25.10.2013, 14:57:13
    #38441374
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
это число попугаев, определяемое соответствием расположения ключей физическому расположению записей. В первом приближении это число действительно можно считать объемом page reads для страниц данных при полном сканировании индекса (без учета кеш-эффектов). Минимальный I/O будет при факторе равном числу страниц данных, максимальный - при факторе равном числу ключей индекса. Все остальные варианты лежат между этими границами. В твоем случае примерно каждый восьмой ключ потребует скачка с одной страницы данных на другую.
...
Рейтинг: 0 / 0
25.10.2013, 15:06:07
    #38441392
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
dimitr,

правильно ли я понимаю что если создать таблицу с нуля

Код: sql
1.
2.
3.
4.
5.
create table t1(
  id integer not null
);

ALTER TABLE t1 ADD CONSTRAINT PK_T1 PRIMARY KEY (ID);



и далее тут же залить её вот так

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
execute block
as
decalre i integer;
begin
  i = 0;
  while (i<100000) do
  begin
    insert into t1(id) values (:i);
    i = i + 1;
  end
end



то фактор кластеризации для pk_t1 должен быть близок к 1 или равен
...
Рейтинг: 0 / 0
25.10.2013, 15:08:53
    #38441398
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
dimitrпри полном сканировании индекса
при каком именно - index или order ?
...
Рейтинг: 0 / 0
25.10.2013, 15:14:09
    #38441411
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
kdv,

этот параметр имеет смысл только для ORDER
...
Рейтинг: 0 / 0
25.10.2013, 15:15:30
    #38441414
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
Симонов Денис,

единице он будет равен только если ты 100К записей уместишь на одну страницу данных :-)
...
Рейтинг: 0 / 0
25.10.2013, 15:20:23
    #38441427
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
dimitr,

Значит я до конца не понял. Тогда понятно почему после b/r значения такие большие. А то я сильно удивлялся почему они не уменьшаются.
Попробую нагуглить точное определение.

P.S. После релиза тройки ждём обновления статьи по методам доступа.
...
Рейтинг: 0 / 0
25.10.2013, 15:20:53
    #38441430
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
dimitrэтот параметр имеет смысл только для ORDER
Симонов Денисто фактор кластеризации для pk_t1 должен быть близок к 1 или равен
план table index order может вызвать адское количество чтений с диска. В моем примере - в 30 раз больше чем самих данных, потому что страницы из кэша выпадают, и их приходится перечитывать.
Как я понял, в данном случае "кластеризация" - это количество указателей на разные страницы данных на странице индекса.
В принципе, ты тоже понял.
...
Рейтинг: 0 / 0
25.10.2013, 15:25:06
    #38441440
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
кажется понял. Эффективность оценивается как отношение total records/Clustering factor?
...
Рейтинг: 0 / 0
25.10.2013, 15:25:42
    #38441443
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
kdv,

или, другими словами, число "прыжков" между страницами данных в процессе сканирования индекса

Симонов Денис,

маленьким число будет только для монотонно возрастающем искусственном PK и если записи никогда не удалялись (или "дырки" не использовались повторно). Рестор может уменьшить фактор кластеризации только за счет дефрагментации таблицы (упорядочивания записей на страницах).
...
Рейтинг: 0 / 0
25.10.2013, 15:44:13
    #38441487
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
dimitr,

а не предполагается ли какой-нибудь команды для кластеризации отдельный таблицы по указанному индексу? Естественно что такая команда может быть выполнена только в монопольном режиме.
...
Рейтинг: 0 / 0
25.10.2013, 16:06:52
    #38441532
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
kdv,

http://ibaseforum.ru/viewtopic.php?f=4&t=4175

насколько я понял этот фактор ввели для того чтобы понять, что здесь навигацию по индексу использовать не надо

Код: sql
1.
2.
3.
SELECT A, COUNT(A)
FROM TABLE
GROUP BY A



т.е. в тройке этот запрос будет выполнен с планом

PLAN SORT ((A NATURAL))

правда пока это не работает
...
Рейтинг: 0 / 0
25.10.2013, 16:11:46
    #38441542
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
Симонов Денис,

я ж говорю, ты понял :-)
...
Рейтинг: 0 / 0
25.10.2013, 16:19:11
    #38441559
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FB-3: что такое clustering factor в выводе gstat -r ?
Если сделают хеш группировку, то тут будет ещё один вариант для этого запроса. Я в какой-то презентации видел, что это вроде тоже планируют в тройке.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / FB-3: что такое clustering factor в выводе gstat -r ? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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