Oracle mechanics

18.02.2016

12c: эффекты Automatic Dynamic Sampling

Filed under: heuristics,Oracle,SQL Tuning — Игорь Усольцев @ 23:57
Tags: ,

Невысокая скорость выполнения запроса 8tx5kfa369rdb:

SQL> @shared_cu12_noxml 8tx5kfa369rdb 0
 
EXECS USERS_OPENING LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC CPU_PER_EXEC PARSES_PER_EXEC GETS_PER_EXEC READS_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC PLAN_HASH_VALUE OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  USE_FEEDBACK_STATS REOPT REOPT_HINTS ADAPT SPD_Valid SPD_Used  DS_LEVEL REASON#1 SQL_PLAN_BASELINE SQL_PATCH OUTLINE_CATEGORY SQL_PROFILE
----- ------------- -------------------- ------------------- ------------ ------------ --------------- ------------- -------------- ------------ ------------- --------------- -------------- ----- ---------- ---------- ---------- ------------------ ----- ----------- ----- --------- --------- -------- -------- ----------------- --------- ---------------- -----------
 2374             9 2016-02-08/12:47:01  12.02.2016 18:33:56   1474675990   1032495912               1        304100           8512     43756160     340539863      4044237314          10748     6 Y          N          Y          N                  N                       12        0                                                                                   

— ср.время / ELA_PER_EXEC ~ 1474 сек., много CPU и Concurrency, что визуально ассоциируется с 9 (в данном примере) одновременно открытыми курсорами / [V$SQL.]USERS_OPENING при полном отсутствии адаптивных эффектов (столбцы USE_FEEDBACK_STATS, REOPT, REOPT_HINTS, ADAPT, SPD_Used и DS_LEVEL) и нежданное событие ожидания в топе AWR:

Top 10 Foreground Events by Total Wait Time
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                           Total Wait       Wait   % DB Wait    
Event                                Waits Time (sec)    Avg(ms)   time Class   
------------------------------ ----------- ---------- ---------- ------ --------
DB CPU                                         181,6K              70.2         
latch: row cache objects        21,615,357      33,1K       1.53   12.8 Concurre -- тут
db file sequential read          4,369,250      23,5K       5.37    9.1 User I/O

судя по SQL Monitoring-у оказались связаны:)

SQL> @ash_sqlmon2 8tx5kfa369rdb
 
LAST_PLSQL  PLAN_HASH_VALUE   ID PLAN_OPERATION                                                CARDINALITY   COST TEMP_SPACE MAX_PGA_ALLOCATED MAX_TEMP_SPACE_ALLOCATED ASH_ROWS WAIT_PROFILE
----------- --------------- ---- ------------------------------------------------------------- ----------- ------ ---------- ----------------- ------------------------ -------- --------------------------------------------------------------------------------------------
Main Query       4044237314    0   SELECT STATEMENT                                                         10748                                                                
                               1     SORT ORDER BY                                                       1  10748                                                                
                               2       HASH GROUP BY                                                     1  10748                  18695611392                 29360128        2 ON CPU(2)
                               3         FILTER                                                                                                                                  
                               4           FILTER                                                                                                                                
>>                             5             HASH JOIN                                                1160  10744    4309000       20368304128                 30408704      743 ON CPU(743)
                               6               TABLE ACCESS FULL                                    148543    146                                                                
>>>                            7               NESTED LOOPS OUTER                                  1129878   6135                  20321708032                 29360128      169 ON CPU(169)
>>>                            8                 NESTED LOOPS                                            1   6127                  20275243008                 29360128      142 ON CPU(142)
                               9                   TABLE ACCESS BY INDEX ROWID                           1      2                                                                
                              10                     INDEX UNIQUE SCAN                                   1      1                                                                
>>                            11                   PARTITION RANGE ITERATOR                              1   6125                  20368304128                 29360128      260 ON CPU(260)
>>>                           12                     TABLE ACCESS BY LOCAL INDEX ROWID BATCHED           1   6125                  20394059776                 30408704     3020 ON CPU(1985); db file sequential read(952); read by other session(83)
>>>                           13                       INDEX RANGE SCAN                             116260   5394                  20321708032                 30408704     1906 db file sequential read(1125); ON CPU(645); read by other session(136)
>>>                           14                 VIEW PUSHED PREDICATE                            38817818      8                  20341630976                 30408704      365 ON CPU(365)
>>>                           15                   HASH JOIN                                             1      8                  20403431424                 30408704   105997 ON CPU(63756); latch: row cache objects(41507); latch free(665); wait list latch free(69)...
>>>                           16                     MERGE JOIN CARTESIAN                                1      5                  20341630976                 30408704      619 ON CPU(619)
>>>                           17                       TABLE ACCESS BY INDEX ROWID                       1      2                  20394059776                 30408704     4522 ON CPU(4522)
>>>                           18                         INDEX RANGE SCAN                                1      1                  20403431424                 30408704     7038 ON CPU(7038)
>>>                           19                       BUFFER SORT                                      11      3                  20374464512                 30408704     3182 ON CPU(3182)
>>>                           20                         TABLE ACCESS FULL                              11      3                  20403431424                 30408704     6090 ON CPU(6090)
>>>                           21                     TABLE ACCESS FULL                                   9      3                  20386981888                 30408704     5246 ON CPU(5246)
                              22           TABLE ACCESS BY INDEX ROWID                                   1      2                  15326747648                 27262976        2 db file sequential read(2)
                              23             INDEX UNIQUE SCAN                                           1      1                                                                
SQL Summary               0    0 ASH fixed 85 execs from 78 sessions                                                                                                      139303  ash rows were fixed from 11.02.2016 14:54:08 to 11.02.2016 16:22:28

— при этом неприятное latch: row cache objects (**) наблюдалось на операции № 15 HASH JOIN плана выполнения, и, судя по параметру P1RAW:

SQL> @ash_sql_wait_tree "event = 'latch: row cache objects' and sql_id = '8tx5kfa369rdb'"
 
BLOCKING_TREE EVENT                     WAIT_CLASS   P1RAW             WAITS_COUNT EXECS_COUNT AVG_WA SESS_COUNT BLOCK_SID       SQL_ID        SQL_PLAN_HASH_VALUE
------------- ------------------------- ------------ ----------------- ----------- ----------- ------ ---------- --------------- ------------- -------------------
(USER)        latch: row cache objects  Concurrency  00000027CE2AC6D8          903          48      2         47 VALID i#1       8tx5kfa369rdb          4044237314
(USER)        latch: row cache objects  Concurrency  00000027CE2AC6D8          571          43      4         41 NO HOLDER i#    8tx5kfa369rdb          4044237314
(USER)        latch: row cache objects  Concurrency  000000283F2CE700          504          53      2         52 VALID i#1       8tx5kfa369rdb          4044237314
(USER)        latch: row cache objects  Concurrency  000000283F2CE700          319          38      4         38 NO HOLDER i#    8tx5kfa369rdb          4044237314
  (USER)      On CPU / runqueue                      00000027CE2AC6D8         2319          39      0         38 NOT IN WAIT i#  8tx5kfa369rdb          4044237314
  (USER)      On CPU / runqueue                      000000283F2CE700          896          36      0         36 NOT IN WAIT i#  8tx5kfa369rdb          4044237314
  (USER)      On CPU / runqueue                      000000000000002D          226           6      0          6 NOT IN WAIT i#  8tx5kfa369rdb          4044237314
  (USER)      On CPU / runqueue                      000000000000003A          152           6      0          6 NOT IN WAIT i#  8tx5kfa369rdb          4044237314
  (USER)      latch: row cache objects  Concurrency  00000027CE2AC6D8          100          20      2         20 VALID i#1       8tx5kfa369rdb          4044237314
  (USER)      On CPU / runqueue                      0000000054435000           85          15      0         13 NOT IN WAIT i#  gg5gztrmrv6yf          3748631801
...

SQL> select * from V$LATCH_CHILDREN where addr in ('00000027CE2AC6D8','000000283F2CE700');
 
ADDR             LATCH# CHILD# LEVEL# NAME                     HASH       GETS     MISSES     SLEEPS IMMEDIATE_GETS IMMEDIATE_MISSES  SPIN_GETS  WAIT_TIME
---------------- ------ ------ ------ ------------------ ---------- ---------- ---------- ---------- -------------- ---------------- ---------- ----------
00000027CE2AC6D8    411      8      4 row cache objects  2412510220 1653809526 2144118389  242621718           2886               45 1913299368 6862698132
000000283F2CE700    411      5      4 row cache objects  2412510220 1207160021 3238054414   71027191             15                0 3170331006 1690404923

SQL> select *
  2    from (select * from V$LATCH_CHILDREN order by sleeps desc)
  3   where rownum <= 3
  4  /
 
ADDR             LATCH# CHILD# LEVEL# NAME                         HASH       GETS     MISSES     SLEEPS IMMEDIATE_GETS IMMEDIATE_MISSES  SPIN_GETS  WAIT_TIME
---------------- ------ ------ ------ ---------------------- ---------- ---------- ---------- ---------- -------------- ---------------- ---------- ----------
00000027CE2AC6D8    411      8      4 row cache objects      2412510220 1665694244 2146076102  242622474           2886               45 1915256350 6862698581
000000283F2CE700    411      5      4 row cache objects      2412510220 1218896380 3238797104   71027552             15                0 3171073362 1690405292
00000027A3324450    142   2810      1 ges resource hash list  876773292 3370896171  271362579     828691             11                2  270542129  207757787

SQL> select distinct s.kqrstcln     latch#,
  2                  r.cache#,
  3                  r.parameter    name,
  4                  r.type,
  5                  r.subordinate#
  6    from v$rowcache r, x$kqrst s
  7   where r.cache# = s.kqrstcid
  8     and s.kqrstcln in (5, 8)
  9   order by 1, 4, 5;
 
LATCH# CACHE# NAME             TYPE   SUBORDINATE#
------ ------ ---------------- ------ ------------
     5      0 dc_tablespaces   PARENT 
     8     10 dc_users         PARENT 

— относилось к элементам Dictionary Cache: dc_tablespaces и dc_users, что теоретически может иметь логику (HASH JOIN, TEMP, квоты/доступы при одновременном выполнении) если бы не подозрительно совпадающий по симптомам Bug 13902396 Hash joins cause «row cache objects» latch gets and «shared pool» latch gets (disabled fix), формально исправленный в 12.1, но наблюдаемый факт — налицо, следовательно стоит обратиться в поддержку, снять трейсы, попыталься воспроизвести проблему…)

Но в уже приводившейся ранее статистике V$SQL/V$SQL_SHARED_CURSOR можно заметить:

SQL> @shared_cu12_noxml 8tx5kfa369rdb 0
 
EXECS USERS_OPENING LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC CPU_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC PLAN_HASH_VALUE OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  USE_FEEDBACK_STATS REOPT REOPT_HINTS ADAPT SPD_Valid SPD_Used  DS_LEVEL REASON#1 SQL_PLAN_BASELINE SQL_PATCH OUTLINE_CATEGORY SQL_PROFILE
----- ------------- -------------------- ------------------- ------------ ------------ ------------ ------------- --------------- -------------- ----- ---------- ---------- ---------- ------------------ ----- ----------- ----- --------- --------- -------- -------- ----------------- --------- ---------------- -----------
 2374             9 2016-02-08/12:47:01  12.02.2016 18:33:56   1474675990   1032495912     43756160     340539863      4044237314          10748     6 Y          N          Y          N                  N                       12        0                                                                                   

1) необыкновенную для 12c стабильность медленного и достаточно частовыполняемого неэлементарного плана без использования каких-либо фиксирующих механизмов (SPM, Outline)

2) также необычное полное отсутствие Automatic Dynamic Sampling (ADS) — столбец DS_LEVEL

Последний факт объяснялся достаточно просто:

SQL> @param optimizer_dynamic_sampling
 
NAME                        VALUE  IS_DEF   IS_MOD     DSC
--------------------------- ------ -------- ---------- --------------------------
optimizer_dynamic_sampling  0      TRUE     SYSTEM_MOD optimizer dynamic sampling

— ADS был отключен на уровне системы во избежание определённых проблем, возникших после обновления на 12c

Что будет, если на уровне запроса допустить использование ADS?

SQL> @sqlpatch+ 8tx5kfa369rdb "opt_param(''optimizer_dynamic_sampling'' 11)" "8tx5kfa369rdb_DS_11"
 
PL/SQL procedure successfully completed
 
SQL_ID        NAME                 CATEGORY  CREATED               STATUS   FMATCH
------------- -------------------- --------- --------------------- -------- ------
8tx5kfa369rdb 8tx5kfa369rdb_DS_11  DEFAULT   12.02.2016 18:31:03   ENABLED  NO
 
SQL_PATCH_HINTS
------------------------------------------
opt_param('optimizer_dynamic_sampling' 11)

— после разрешения автоматического optimizer_dynamic_sampling = 11 запрос заметно оживился:

SQL> @shared_cu12_noxml 8tx5kfa369rdb 0
 
EXECS USERS_OPENING LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC CPU_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC CURSOR_STATUS PLAN_HASH_VALUE OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  USE_FEEDBACK_STATS REOPT REOPT_HINTS ADAPT SPD_Valid SPD_Used  DS_LEVEL REASON#1                              SQL_PATCH          
----- ------------- -------------------- ------------------- ------------ ------------ ------------ ------------- ------------- --------------- -------------- ----- ---------- ---------- ---------- ------------------ ----- ----------- ----- --------- --------- -------- ------------------------------------- -------------------
    1             0 2016-02-12/18:34:10  12.02.2016 18:35:03     53956966      3806000     51123937           101 VALID              1605646697          12467     0 Y          N          N          Y                  Y               1 Y     10        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
    1             0 2016-02-12/18:38:09  12.02.2016 18:38:10      1992737      1698000       289132             0 VALID               148770886          11464     1 Y          N          N          Y                  Y               5 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
    1             0 2016-02-12/18:38:40  12.02.2016 18:38:40      1345218       556000       787180           268 VALID               434476347          11413     2 Y          N          N          Y                  Y                       12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
  111             0 2016-02-12/18:41:42  13.02.2016 18:21:07       539732        58306       486542             0 VALID               148770886          11464     3 Y          N          Y          N                  N                 Y     12        0         11       Rolling Invalidate Window Exceeded(2) 8tx5kfa369rdb_DS_11
    2             0 2016-02-13/19:16:32  13.02.2016 19:18:02     59043543     13302500     46114602          1282 VALID               785030538           6137     4 Y          N          N          Y                  Y               3 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
    1             0 2016-02-13/20:39:48  13.02.2016 20:39:51      3771104      1557000      2217662             0 VALID              1605646697          11464     5 Y          N          N          Y                  Y               4 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
    1             0 2016-02-13/20:59:37  13.02.2016 20:59:39      2236629       728000      1513021             0 VALID               195916382           8228     6 Y          N          N          Y                  Y               3 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
   48             0 2016-02-13/21:07:23  14.02.2016 13:09:53       310978        56729       255501             0 VALID              1605646697          11464     7 Y          N          Y          N                  N                 Y     12        0         11       Rolling Invalidate Window Exceeded(2) 8tx5kfa369rdb_DS_11
    1             0 2016-02-14/13:36:01  14.02.2016 13:37:05     64442259     13025000     51705701           263 VALID               785030538           6137     8 Y          N          N          Y                  Y               3 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
    1             0 2016-02-14/13:44:22  14.02.2016 13:44:22       485687       309000       178026             0 VALID               148770886          11464     9 Y          N          N          Y                  Y               4 Y     12        0         11       Auto Reoptimization Mismatch(1)       8tx5kfa369rdb_DS_11
  125             2 2016-02-14/14:14:47  15.02.2016 10:57:06       584470        57488       529892             0 VALID               148770886          11464    10 Y          N          Y          N                  N                 Y     12        0         11                                             8tx5kfa369rdb_DS_11
 
11 rows selected
 
--------------------------------------------------------------
SQL_ID=8tx5kfa369rdb Shared Pool statistics by PLAN_HASH_VALUE
--------------------------------------------------------------
 
EXECS LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC FETCH_PER_EXEC ROWS_PER_EXEC PLAN_HASH_VALUE AVG_CBO_COST CHILDS BIND_SENSE BIND_AWARE REOPT ADAPT SQL_PATCH          
----- -------------------- ------------------- ------------ -------------- ------------- --------------- ------------ ------ ---------- ---------- ----- ----- -------------------
    3 2016-02-14/13:36:01  14.02.2016 13:37:05     60843115             29           286       785030538         6137      2 Y          N          Y     Y     8tx5kfa369rdb_DS_11
    1 2016-02-12/18:34:10  12.02.2016 18:35:03     53956966              1             0      1605646697        12467      1 Y          N          Y     Y     8tx5kfa369rdb_DS_11
    1 2016-02-13/20:59:37  13.02.2016 20:59:39      2236629              1             5       195916382         8228      1 Y          N          Y     Y     8tx5kfa369rdb_DS_11
    1 2016-02-12/18:38:40  12.02.2016 18:38:40      1345218             46           450       434476347        11413      1 Y          N          Y     N     8tx5kfa369rdb_DS_11
  238 2016-02-14/14:14:47  15.02.2016 10:57:06       569107             16           153       148770886        11464      4 Y          N          Y     Y     8tx5kfa369rdb_DS_11
   49 2016-02-13/21:07:23  14.02.2016 13:09:53       381592             10            97      1605646697        11464      2 Y          N          Y     Y     8tx5kfa369rdb_DS_11
 
EXECS SQL_ID              PLAN ELA_PER_EXEC CPU_PER_EXEC UIO_PER_EXEC ROWS_PER_EXEC
----- ------------- ---------- ------------ ------------ ------------ -------------
  293 8tx5kfa369rdb  148770886      1345439       220700      1134984           145

— при ср.времени (из третьей части вывода скрипта — среднее по больнице из V$SQLSTATS) ~ 1.3 сек запрос начал использовать Cardinality Feedback Statistics (USE_FEEDBACK_STATS), как следствие — Adaptive Reoptimization (REOPT, REOPT_HINTS) — и всё это богатство оказалось неочевидно связано с уровнем ADS — неспроста и Dynamic Statistics, и Automatic ReoptimizationSQL Plan Directives — но это понятнее) причисляются в документации к типам adaptive statistics

Рез-т: ср.время выполнения снизилось на 3 порядка(+), ожидание latch: row cache objects исчезло из AWR(+), кол-во курсоров запроса выросло с 1 до 10(-) — очень неплохой tradeoff)

Для дальнейшей жизнедеятельности я установил для этого запроса default-ный уровень ADS:

SQL> @sqlpatch- 8tx5kfa369rdb_DS_11 8tx5kfa369rdb
 
PL/SQL procedure successfully completed
 
SPM Elements (SQL Profile, or SQL Plan Baseline, or SQL Patch) List for SQL_ID = 8tx5kfa369rdb

no rows selected.

SQL> @sqlpatch+
&SQL_ID: 8tx5kfa369rdb
&SQL_PATCH_TEXT: opt_param(''optimizer_dynamic_sampling'' 2)
&SQL_PATCH_NAME: 8tx5kfa369rdb_DS_2
 
PL/SQL procedure successfully completed
 
SQL_ID        NAME                           CATEGORY                       CREATED               STATUS   FMATCH
------------- ------------------------------ ------------------------------ --------------------- -------- ------
8tx5kfa369rdb 8tx5kfa369rdb_DS_2             DEFAULT                        15.02.2016 12:47:10   ENABLED  NO
 
SQL_PATCH_HINTS
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
opt_param('optimizer_dynamic_sampling' 2)

SQL> @shared_cu12_noxml 8tx5kfa369rdb 0
 
EXECS USERS_OPENING LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC CPU_PER_EXEC UIO_PER_EXEC CONC_PER_EXEC CURSOR_STATUS PLAN_HASH_VALUE OPTIMIZER_COST CHILD BIND_SENSE BIND_AWARE SHAREABLE  USE_FEEDBACK_STATS REOPT REOPT_HINTS ADAPT SPD_Valid SPD_Used  DS_LEVEL REASON#1                         SQL_PATCH         
----- ------------- -------------------- ------------------- ------------ ------------ ------------ ------------- ------------- --------------- -------------- ----- ---------- ---------- ---------- ------------------ ----- ----------- ----- --------- --------- -------- -------------------------------- ------------------
    1             0 2016-02-15/13:00:37  15.02.2016 13:00:41      3656387      1337000      2315753             0 VALID               148770886          11464     0 Y          N          N          Y                  Y               3 Y     10        2         2        Auto Reoptimization Mismatch(1)  8tx5kfa369rdb_DS_2
    1             0 2016-02-15/13:03:22  15.02.2016 13:04:51     88850006     22667000     66397968           729 VALID              1600251067          10909     1 Y          N          N          Y                  Y               5 Y     11        1         2        Auto Reoptimization Mismatch(1)  8tx5kfa369rdb_DS_2
    1             0 2016-02-15/13:05:18  15.02.2016 13:05:19      1203073       861000       338647             0 VALID               434476347          11412     2 Y          N          N          Y                  Y                       10        2         2        Auto Reoptimization Mismatch(1)  8tx5kfa369rdb_DS_2
  716             1 2016-02-15/13:07:59  18.02.2016 11:47:25       241651        49473       192842             0 VALID               148770886          11464     3 Y          N          Y          N                  N                 Y     10        2         2        Auto Reoptimization Mismatch(1)  8tx5kfa369rdb_DS_2
 
--------------------------------------------------------------
SQL_ID=8tx5kfa369rdb Shared Pool statistics by PLAN_HASH_VALUE
--------------------------------------------------------------
 
EXECS LAST_LOAD_TIME       LAST_ACTIVE_TIME    ELA_PER_EXEC FETCH_PER_EXEC ROWS_PER_EXEC PLAN_HASH_VALUE AVG_CBO_COST CHILDS BIND_SENSE BIND_AWARE REOPT ADAPT SQL_PLAN_BASELINE SQL_PATCH          SQL_PROFILE
----- -------------------- ------------------- ------------ -------------- ------------- --------------- ------------ ------ ---------- ---------- ----- ----- ----------------- ------------------ -----------
    1 2016-02-15/13:03:22  15.02.2016 13:04:51     88850006             38           372      1600251067        10909      1 Y          N          Y     Y                       8tx5kfa369rdb_DS_2 
    1 2016-02-15/13:05:18  15.02.2016 13:05:19      1203073             59           586       434476347        11412      1 Y          N          Y     N                       8tx5kfa369rdb_DS_2 
  717 2016-02-15/13:07:59  18.02.2016 11:47:25       246414             15           143       148770886        11464      2 Y          N          Y     Y                       8tx5kfa369rdb_DS_2 
 
EXECS SQL_ID              PLAN ELA_PER_EXEC CPU_PER_EXEC UIO_PER_EXEC ROWS_PER_EXEC PX_PER_EXEC
----- ------------- ---------- ------------ ------------ ------------ ------------- -----------
  719 8tx5kfa369rdb  148770886       370976        83850       288077           144           0

— что, как видно, даже уменьшило кол-во пользуемых курсоров (до 4-х) и ср.время выполнения (до 0.371 сек) — непрост механизм Automatic Dynamic Sampling, даже в default-ном исполнении)

2 комментария »

  1. Спасибо, оч. информативно.
    PS. Не подкинете листинг скриптов sqlpatch+/-? Не нашел(

    комментарий от Аноним — 09.03.2016 @ 09:42 | Ответить

    • в самом начале страницы Scripts есть ссылка на актуальный zip-архив (скачать одним архивом)

      комментарий от Игорь Усольцев — 09.03.2016 @ 12:02 | Ответить


RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Создайте бесплатный сайт или блог на WordPress.com.

%d такие блоггеры, как: