мар. 042010
 

Идват добри дни за тежката металургия в София! Един месец след AC/DC ще настане лудница:

Пир за метълското сърце – Metallica, Slayer, Megadeth, Anthrax, Heaven & Hell, Rammstein, Manowar, Alice In Chains, Mastodon и Stone Sour – всички на стадион „Васил Левски“.

Мога да кажа само УАААААААА!

 Posted by at 12:09
мар. 022010
 

Снощи, докато се прибирах, дочух следния разговор между ученици, около седми клас (преразказвам по спомен):

– Тия неща по Български защо ни карат да ги учим? Подчинено изречение с обстоятелствено пояснение… На кого му трябва това?
– Ми да, аз тия неща след няколко месеца ги забравям. Няма смисъл.
– А тия преразкази с елементи на разсъждения…
– Пълна глупост. Защо ни карат да ги правим?
– Аз мога да си разсъждавам и без да го пиша на хартия…

Между другото, децата изглеждаха интелигентни. Добри ученици. Разсъждаваха доста добре. И тук идва драмата – никой не им е обяснил защо трябва да правят точно това. Защо учат точно тези неща, защо правят точно тези упражнения и как те се отнасят към реалния живот. Каква е ползата.

– Оф, пък в четвъртък имаме контролно по История.
– Сега тоя четвъртък ли?
– Да.
– И тая история, дето я учим… След година се оказва, че не било точно така.

Тук ще оставя очевидния коментар за любопитния читател. Евала на децата, че в седми клас усещат такива неща. Като си помисля аз, през целия си курс на обучение, колко сляпо вярвах на учебния материал…

Естествено, тук ехидно се усмихвам при мисълта, че както историята се променя след година, така утре може да се окажe, че и това, което се учи, примерно, по физика, не е баш така. Може би в седми клас е твърде рано за да се казват такива истини. Но на мен никой не ми го каза даже и в университета.

17 години ме учиха да запомням и възпроизвеждам. И може би само преподавателите ми по висша математика ме насърчаваха да подлагам на критика това, на което ме учат. Да не вярвам на преподавания материал като на една свещена неизменна истина. Никой друг не ми каза, че това, което уча, след година може да се окаже, че не било точно така. Младежите от автобуса го знаят, отчасти. Знаят го за историята. Може някой възрастен да им го е казал, няма значение. Но те със сигурност знаят повече от мен, когато бях на тяхната възраст.

Дали е заради учебната система, или въпреки нея?

 Posted by at 12:51

Kyle Hailey

 Без категория  Коментарите са изключени за Kyle Hailey
фев. 142010
 

Един от основателите на OakTable Network. Работил в Oracle Kernel Development, минал през Oracle Gold Support в Париж, после през Quest, за да се завърне в Oracle като един от „мозъците“, измислили OEM. Един от евангелистите на wait interface-а като мощен инструмент за performance troubleshooting/tunning. От четеното за него подозирам, че той стои и зад много полезния, но рядко използван механизъм за Direct Memory Access в Grid Control-a. В момента работи за Embarcadero, но като лектор се включва с Performance-related сесии на семинарите на Hotsos, NoCOUG, RMOUG, NYOUG, Oracle World и Dbforum (защо не и на BGOUG, някой ден?).

Човека има какво да сподели. И ще го сподели, на живо, макар и виртуално, в края на март. Подозирам, че ще си струва. Аз ще бъда „там“ 🙂

 Posted by at 18:59

Правилен индекс, грешен подход

 Без категория  Коментарите са изключени за Правилен индекс, грешен подход
фев. 082010
 

Това ще влезе в категория quick checks. Предварително казвам, че (все още) не познавам добре системата, за която става дума.

Днес ми излезе интересен въпрос: една таблица има няколко десетки милиона реда, с данни от 8 години насам. Има (not null) колонка с дата, по която има индекс. Колонката няма хистограма. Когато пуснем заявката select count(1) from tab where date_col > sysdate-1, съвсем правилно, се изпозлва съответният индекс, т.е. не сме в тази скучна ситуация „Oracle не ми използва индекса“. Обаче се прави Index Fast Full Scan (wtf???), което естествено, дава незадоволителна производителност:

SQL> set autot traceonly explain
SQL> select count(1) from tab where date_col>SYSDATE-1;

Execution Plan
----------------------------------------------------------
Plan hash value: 2096840410

----------------------------------------------------------------------------------------
| Id  | Operation             | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |                |     1 |     8 | 10461   (7)| 00:02:06 |
|   1 |  SORT AGGREGATE       |                |     1 |     8 |            |          |
|*  2 |   INDEX FAST FULL SCAN| I_TAB_DATE_COL |  5038K|    38M| 10461   (7)| 00:02:06 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - filter("DATE_COL">SYSDATE@!-1)

Според explain plan, използването на IFFS води до cost от ~10000, докато при hint INDEX_SS_ASC cost-а е 15000.

SQL> SELECT /*+INDEX_SS_ASC(t I_TAB_DATE_COL)*/ COUNT(1) FROM tab t WHERE date_col>SYSDATE-1;

Execution Plan
----------------------------------------------------------
Plan hash value: 547665643

------------------------------------------------------------------------------------
| Id  | Operation         | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                |     1 |     8 | 15875   (1)| 00:03:11 |
|   1 |  SORT AGGREGATE   |                |     1 |     8 |            |          |
|*  2 |   INDEX RANGE SCAN| I_TAB_DATE_COL |  5038K|    38M| 15875   (1)| 00:03:11 |
------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("DATE_COL">SYSDATE@!-1)

При аномалии в cost, особено в елементарни заявки, веднага гледам статистиките, защото в 99.9999% от случаите, там се крие заека.

Статистиките си бяха ОК, събрани са скоро (предната вечер):

SQL> set autot off
SQL> select to_char(last_analyzed, 'DD.MM.YYYY HH24:MI:SS')
  from dba_tab_statistics
 where owner = 'OWNR'
   and table_name = 'TAB';  

TO_CHAR(LAST_ANALYZED,'DD.MM.Y
---------------------------------------------------------------------------
07.02.2010 22:03:58

Преди да задълбая в clustering factor и други подробности за индекса, погледнах какво точно пише за тази колонка, та оптимизатора решава, че ще вземе твърде много данни при range scan.

SQL> column low_value format a20
SQL> column high_value format a20
SQL> select low_value, high_value, density
  from dba_tab_col_statistics
 where owner = 'OWNR'
   and table_name = 'TAB'
   and column_name = 'DATE_COL';

LOW_VALUE            HIGH_VALUE              DENSITY
-------------------- -------------------- ----------
78660107173A0A       78710208121319       1.1388E-07

Опа… греда. Данните за low_value и high_value са в колонка тип long (ха-ха-ха). С малко търсене намерих в OTN как да видя датата в по-разбираем формат

SQL> set serveroutput on
DECLARE
  rv RAW(32) := '78710208121319';
  dt DATE := NULL;
BEGIN
  dbms_stats.convert_raw_value(rv, dt);
  dbms_output.put_line(TO_CHAR(dt, 'DD-MM-YYYY hh24:mi:ss'));
END;
/
08-02-2013 17:18:24

PL/SQL procedure successfully completed.

Грешката е вярна! Оказа се че има няколко бъгливи записа, които стоят години напред. Съответно предиката date_col>SYSDATE-1 връща 3 години данни. При липсата на хистограми оптимизатора няма как да знае, че ще върне няколко десетки/стотици записи – грубата сметка показва, че ще прерови данни за 3 години от общо налични 11 между low_value и high_value.

В случая решението беше да се затрият бъгливите данни. Но по принцип това е идеален пример за ползата от хистограмите.

 Posted by at 13:27
ян. 292010
 

Поздрав за всички защитници на уличните псета:

„Кучета разкъсаха 13 животни в столичния зоопарк“

Да ви питам, сега, „добри“ хора: когато кучетата нападат деца и възрастни, това не ви притеснява чак толкова. А когато нападат животни? Ами сега, кое е по-еко: да защитим псетата да лопатарите?

Уличният добитък, плод на човешкото безхаберие и простотия, не може да бъде оставен да разкъсва каквото си реши. Ако някой иска, да си прибере кучетата в дома си. Ако не – по възможно най-безболезнения начин да минат под ножа. Защото тая гмеж, тия зли зъби и нокти са несъвместими с хуманността. И никой не може да ме убеди, че, разбираш ли, и те душа носят, и те заслужават живот. Вирусите също душа носят. Както и плъховете, и хлебарките.

Единствената файда от уличните кучета е малкото улични котки…

 Posted by at 15:14

Сняг!

 Без категория  Коментарите са изключени за Сняг!
ян. 292010
 

Най-после! От кога го чакам!

Тази година в София имаше само студ, най-много да навали 1-2 пръста сняг. А аз искам да има СНЯГ! Истински, който да направи Големото село бяло, чисто и свежо.

И ето, днес вече има. Доживях! Вярно, само десетина сантиметра, но все е нещо. Успява да покрие сивотата и боклуците. Ах, как ми липсваше снега…

Днес нарочно тръгнах малко по-рано за работа, за да мога да се придвижа с метрото до Ректората и после да походя пеша през парка Заимов. Ах, какво удоволствие изпитах! Тесни не-много-отъпкани пътечки във всички посоки, като разорана целина. Бели дървета. И слънце. Топло време, без вятър… идилия! Прекрасно зимно време за разходка, пък била тя и десетина минути. За малко се почувствах като в на излет планината. Ех, защо парк от Младост до центъра…

Пожелавам на всички ви ужасно много УСМИВКИ и ЛЮБОВ днес, защото си заслужава. Днес никой няма право да е намръщен. Защото денят започва със снежно-слънчева усмивка за целия град!

 Posted by at 11:11
ян. 262010
 

Налбантите са хора, които се занимават с подковаване на коне. Това си е било съвсем достойна професия преди стотина години. Бедни и богати, селяни и крале са се възползвали от техните услуги. Добрите налбантите са били уважавани, защото лошо подкования кон може да окуцее и да не върши работа. А това си е проблем.

Занаята, естествено, се е предавал от баща на син. Младите момчета са се учили на тънкостите занаята с години. Да подковаваш кон не е проста работа – живо същество е.

Обаче с навлизането на МПС-тата като превозни и земеделски машини, конете се използват все по-малко. Налбантите остават без работа. Естествено, това се е случвало в продължение на много години, даже десетилетия. Обаче традиционалистите, фамилиите, които много поколения наред се хранят с налбантство, се променят трудно:
– Аз друго не мога! Баща ми се е хранил с това, и дядо ми, и безчет години назад. Владея си занаята добре. Не можете да ме оставите без работа!

И така… пак опираме до субсидии. Може и до запречване на основни междуселски пътища край Пловдив. Защото, макар че години наред работата е намалявала, не е имало някой, който да поеме отговорността, или да осигури достойно алтернативно препитание на налбантите. А те са били силни хора. Все пак по цял ден млатят с чука. Можели са да направят много поразии.

Хайде, в края на годината пак ще си говорим за тютюн.

 Posted by at 18:27
ян. 262010
 

В средновековието е имало и такава работа: преписвач. По манастири и кралски дворове, стотици (ако не и хиляди) хора са си изкарвали хляба с това: да преписват книги, прокламации, обяления и т.н. Това е било високообразован труд. Преписвачите са били сред малцинството от грамотни хора. Не са били богати, но като цяло не са и гладували.

И идва в средата на 15-ти век Йохан Гутенберг и взема че изобретява печатарската преса. Всъщност тя е изобретена над 2 века по-рано от кореец, но той я прави полезна и относително масово-приложима.

Направо е съсипала труда на преписвачите. Вече едно копие на последната прокалмация може да излезе за няколко минути (ако не и секунди). Свещените книги, требниците, житията на светиите и прочее научна литература излизат за часове или дни на копие, а не седмици и месеци. Направо е оставил преписвачите гладни.

Понеже са били високообразовани, вероятно някои от тях са станали печатари. Но понеже не са били инженери, пък и не са били необходими чак толкова хора, много от тях са си останали гладни.

Какво ли би направил профсъюзът на преписвачите, ако имаше такъв? Дали би използвал връзките си в свещенническите среди за да прекара забрана за издаване на книги чрез печатна машина? Или би натискал в кралския двор да осигури прокламациите да продължат да се пишат бавно и на ръка? Може би преписвачите, които не са останали чак пък съвсем без работа, биха искали субсидия за всяка преписана страница, за да са конкурентоспособни на печатарите?

Оф, какво ви занимавам и аз с проблемите на селското стопанство…

 Posted by at 18:09

Сбирка на БГПО пролет’10

 Без категория  Коментарите са изключени за Сбирка на БГПО пролет’10
ян. 182010
 

Ако има някой не-чул/не-разбрал, да кажа и аз: пролетната сбирка на БГПО ще се случи в края на април (от 23 до 25 април 2010). И този път организаторите са успели да привлекат звезда от световна величина: самият Tom Kyte. Адски съм благодарен за усилията, които правят – не е лесно да се доведе такъв човек. И се надявам той да не им върже тенекия, както направи Anjo Kolk.

Всъщност с напредването на възрастта (пригответе големи подаръци за наближаващият ми юбилей, благодаря 😉 ), все повече оценявам нашите си „звезди“ – примерно Юлиян Дончев. Owen Hughes също е почти местен с третото си идване, a и също е много добър лектор. Както и Пламен, когато реши да говори. Пък и всеки друг, решил да сподели опит или да покаже резултати от неговия research. (Иване, не се ослушвай)

Този път аз ще се включа с една по-нестандартна лекция. Мисля, че това, което съм подготвил, ще бъде интересно не само за DBA, а и за developers, sysadmins, даже и за IT-ориентирани мениджъри. За това пък съм се замислил (и дано да успея) за есенната сбирка да подготвя най-hard Oracle-database-related лекцията от всичко, което съм правил до сега. Ама това е в далечното несигурно бъдеще… Сега ще говоря за performance forecasting. Тази презентация си я подготвям от година и половина и се надявам, че се е получила добре.

Ще се видим там, нали?

 Posted by at 13:10

Flash-free Metalink

 Без категория  1 Response »
ян. 082010
 

Преди 2-3 месеца Oracle потопиха в море от скръб всички честни клиенти, като затвориха старата бърза и удобна версия на Metalink и оставиха само бъгавата неудобна и нелогична Flash версия. Ако е вярно това, че когато те псуват, те сърби най-задната част от тялото, сигурно всички в Oracle Support са подлудили личните си дерматолози. Думите са слаби да опиша само аз какво им мисля, да не говорим за сръбските DBA-и.

Но има искрица в тунела. Днес случайно попадах на HTML версия на омразния My Oracle Support. Освободена от всички тъпи „красоти“ на flash версията (които може да са много cool, ама само до петото отваряне). Бърза, спретната, и съвсем легална. Enjoy!

П.П. Между другото, ЧНГ на всички

 Posted by at 17:47