Dzień 2

The Most Persistent Microsoft SQL Server Myths (and Why They Are Wrong)

Panel dyskusyjny prowadzony przez Macieja Pileckiego.

Kolejny panel dyskusyjny prowadzony przez Maćka – rzecz jasna nie mogłem sobie odpuścić, szczególnie, że temat interesujący…

1. Table variables remain only in memory

Okazało się, że to tak nie do końca jest :). Opis tabeli ląduje w tempDB, a dane jeśli się mieszczą, to mogą siedzieć w cache’u, ale to nie znaczy, że nie lądują też w tempDB. Dodatkowo dowiedziałem się, że zmienne tablicowe (nie pamiętam, czy dotyczy to również tabel tymczasowych) “przeżywają” ROLLBACK.

2. Ciekawe typy danych, które różnie są interpretowane
  • Timestamp – nie ma nic wspólnego z czasem, jest wewnętrznym identyfikatorem oznaczającym wersję wiersza.
  • Bit – to NIE jest to samo co boolean.
  • Vardecimal – tu niestety nie pamiętam o co chodziło…
3. Clustered Index == Primary Key

To akurat wiem, że nieprawda :).

4. Clustered Index == Physical Order

To też wiem. To nie prawda. Clustered Index == Logical Order.

5. Group by ensures order

Tylko się nie zawsze zgadza, jak się niektóre operacje zrównoleglą.

6. Execution plans == query performance

Jedynie SQL Profiler prawdę Ci powie. Tak to zarówno IO Statistics, jak i plan wykonania czasami “kłamią”. W profilerze na początku najlepiej zwrócić uwagę na czas, CPU, liczbę odczytów, zużycie pamięci.

7. Identity columns are unique

Zwykle tak, ale jak się je zresetuje, to już różnie bywa.

8. Z której godziny dane znajdą się w backupie rozpoczętym o 3:00, a zakończonym o 3:30

Na pewno nie z 3:00. Prawdopodobnie z okolic 3:29, w każdym razie blisko 3:30.

9. 64-bits servers are faster :D
10. Max server memory setting

Chodziło o to, że limit odnosi się tylko do buffer pool

11. To go beyond 4GB we need 64-bits
12. Index Views are Enterprise Edition only

Są też w wersji Express, tyle że optymalizator zapytań skorzysta z nich tylko w wersji Enterprise.

 

Oprócz tego dodatkowa wiedza wyniesiona z sesji:

  1. Unique index na kolumnie z NULLami
    1. SQL 2008 – Filtered Index
    2. SQL 2005 – Indexed View
  2. Zmienne tablicowe (w przeciwieństwie do tabel tymczasowych) nie posiadają statystyk
  3. Nieprawidłowe statystyki można podejrzewać, jeżeli jest duża różnica pomiędzy estimated cost i actual estimated cost.
  4. No more BACKUP LOG WITH TRUNCATE ONLY in SQL 2008
  5. Nauczyłem się fajnego żartu SQLowego:
    • How much RAM does SQL Server need?
    • MORE!!! :D

 

Ogólne wrażenie po sesji bardzo pozytywne. Jest jeszcze więcej takich mitów, sam kilka mam w głowie. Generalnie takie mity powinno się jak najczęściej obalać.

Tough Lessons Learned As a Software Project Manager

Gregg Boer

Pan z dużym bagażem jako PM, również z doświadczeniami niezrealizowanych projektów prezentował swoje przemyślenia. Było zabawnie i przekazał dużo istotnych informacji, które jak to zwykle na takich sesjach – niby są oczywiste, tylko gorzej w praktyce…

  1. Pracowanie nad najważniejszą rzeczą jest bardzo trudne.
  2. Trzeba zawsze mieć w tyle głowy cel całego projektu.
  3. Priorytety
    1. Jeśli ich nie dostajemy – ktoś źle wykonuje swoją pracę.
    2. Jeśli ich nie wymagamy – sami źle wykonujemy pracę.
  4. Rola PMa to często umiejętność
    1. Obrony decyzji rezygnacji z danej funkcjonalności
    2. Obrony decyzji realizacji danej funkcjonalności
  5. Często przy realizacji danego kawałka systemu zapominamy PO CO to jest realizowane.
  6. Krótkie/agresywne deadline nie motywują!!!
  7. Trzeba rozumieć znaczenie i wykorzystywanie estymat.
    1. Jeśli developer potrzebuje 2 dni, żeby ocenić, że pracochłonność zadania wynosi 3 to źle.
    2. Jeśli pytamy kogoś ile coś będzie kosztować, mówimy o kwotach rzędu 300000$ i chcemy odpowiedź w 15 sekund, to bardzo źle.
  8. Rola PMa – zaprezentować i umieć obronić rzeczywisty harmonogram.
  9. Większość ryzyka w projektach jest znana i NIE zarządzana.
  10. Należy osobom realizującym dane zadnie zadawać pytanie: “Co mogłoby się stać, co przeszkodziłoby Ci w realizacji tego zadania?”.
  11. PM ma być szanowany, niekoniecznie popularny.

From the Trenches: Using Architectural Skills to Increase Solution Adoption Success Rates

Jim Wilt

Pan mówił o kilku elementach, na które warto zwrócić uwagę przy realizowaniu systemów:

  1. Należy edukować i szkolić klienta.
  2. Strategia powinna być skoncentrowana na problemie i jego rozwiązaniu, a nie na konkretnej technologii.
  3. Powinniśmy się starać przekonać klienta, że to On jest właścicielem projektu i w ten sposób przesunąć ponoszone ryzyko na niego.
  4. Need Approach Benefit Considerations – zwięzły sposób przekazywania idei – powinno się mieścić na jednej stronie.
  5. StrategyMap (Norton & Kaplan) – do rozpoznania…

Understanding Code Extensibility

Jason Olson

Po zobaczeniu o czym będzie sesja (reguły SOLID) wyszliśmy po 15 minutach. To już znamy.

Parallel Computing APIs with the Microsoft .NET Framework 4

Mark Michaelis

Tu trafiłem dopiero w połowie i niestety to co mnie najbardziej interesowało (System.Threading.Tasks) zostało już omówione, więc z nowych rzeczy wyniosłem tylko:

  1. Lazy
  2. ConcurrentCollecitons
  3. CHESS – narzędzie Microsoft Research do testowania aplikacji wielowątkowych.

Creating REST Enterprise Mashups Using Microsoft Office SharePoint Designer 2007

J.R. Arredondo, Dave Pae

Na tę sesję wybraliśmy się tak totalnie bezmyślnie… I okazało się, że to był strzał w 10. Korzystając z mocy, jaką dają WebServicy i SharepointDesignera Panowie w 30 minut wyklikali aplikację, która łączyła ze sobą dane z bazy danych, Twittera, serwisów pogodowych, ładnie wyglądała i prezentowała jeszcze odpowiednie informacje na GoogleMaps. Wszystko dostępne za darmo (zarówno Designer, jak i WSS, które wystarczało…)

Nie wiem jakie możliwości ma SharePoint i pewnie mało prawdopodobne, żebym szedł w kierunku dowiadywania się, ale warto było zobaczyć takie coś w praktyce. Jak znajdę chwilę to się tym pobawię, czyli najprawdopodobniej nigdy.