Monthly Archives: Październik 2012

Kolejny artykuł na wss.pl

Na portalu wss.pl właśnie ukazał się kolejny artykuł mojego autorstwa. Jest on nieco inny od wsześniejszych publikacji stworzonych przez mnie, gdyż tym razem pokusiłem się o opisanie czegoś, co nie jest związane bezpośrednio z bazami danych SQL Server.

Jaki jest temat tego artykułu?

A no właśnie taki:

Instalacja sterowników niepodpisanych cyfrowo w Windows Server 2012

Tych z was, którzy podobnie jak ja testują różne nowinki na domowch PC-tach lub laptopach zachęcam do lektury. Tym bardziej, że systemy serwerowe nie koniecznie mają wbudowane sterowniki do takich komponentów jak np. karty Wi-Fi 🙂

Reklamy

Wyniki konkursu urodzinowego

Właśnie skończyłem sprawdzać nadesłane rozwiązania i przyszedł czas na publikację wyników konkursu. Zanim to jednak zrobię chciałbym zakomunikować pewną zmianę w jego przebiegu:

Z uwagi na to, że aktywny udział w konkursie wzięły jedynie trzy osoby, to postanowiłem wyróżnić je wszystkie.

Mam nadzieję, że taka zmiana wam nie przeszkadza i jesteście w stanie przyjąć nowe reguły bez większych zastrzeżeń. Tym bardziej, że przygotowanie rozwiązań wymagało pewnej ilości czasu i (przede wszystkim) chęci 🙂

W przypadku gdyby powstały w waszych głowach jakieś  „ale”, to pamiętajcie o punkcie 10 regulaminu:

„10. Decydujący głos w przypadku kwestii spornych i interpretacji regulaminu ma organizator konkursu”

Jeżeli braliście udział w konkursie, to nie myślcie, że możecie odetchnąć spokojnie. O ile nagrody za pierwsze trzy miejsca są takie same, to pomysł nagrodzenia wszystkich zrodził się zaledwie kilka godzin temu. Oznacza to, że:

Trzeci egzemplarz książki Beginning Microsoft SQL Server 2012 Programming zmówię dopiero dzisiaj.

W wolnym tłumaczeniu można przyjąć, że osoba, która zajęła 3 miejsce będzie musiała trochę poczekać z odbiorem nagrody. Generalnie przesyłki z amazon-u dochodzą do mnie w około 3 tygodnie, tak więc dodając do tego czas wysyłki pocztą otrzymujemy około miesiąca. Sądzę, że biorąc pod uwagę naszą „drobną zmianę regulaminu”, to czas oczekiwania jest jak najbardziej do przyjęcia 🙂 Pozostałe osoby oczywiście otrzymają książki na czas.

Przejdźmy więc do wyników

Jak wspomniałem wcześniej w konkursie aktywnie wzięły udział trzy osoby. Tabela z wynikami zawiera więcej wpisów, gdyż jedna z nich przesłała kilka rozwiązań:

LP Imię i nazwisko uczestnika Nazwa rozwiązania* Logical Reads CPU Time Elapsed Time
1 Arkadiusz Ćwiek MD5 2610 361 396
2 Arkadiusz Ćwiek SHA2_256 3566 343 378
3 Piotr Trychta Tradycyjny indeks 4452 344 492
4 Arkadiusz Ćwiek SHA2_512 5523 546 392
5 Arkadiusz Ćwiek Binary 5605 621 428
6 Arkadiusz Hahn SHA1 12288 203 376

Podczas oceny rozwiązań brałem pod uwagę zarówno czas procesora jak i ilość odczytanych stron z danymi. Każde zapytanie odpalałem 3 razy zapisując najlepszy wynik.

Analizując tabelę można zobaczyć, że najbardziej optymalnym rozwiązaniem było wyliczenie sumy MD5 w celu jej użycia do podrównania wartości w obu zbiorach. Arek Ćwiek ograniczył w ten sposób ilość operacji dyskowych związanych z odczytem danych, tym samym skrócił czas oczekiwania na wynik.

Z drugiej strony tabeli znalazł się Arek Hahn, którego rozwiązanie polegało na wyliczeniu sumy SHA1. W tabeli powyżej widać, że jest one najszybsze pod kątem zużycia czasu procesora. Niestety ilość odczytów w tym wypadku jest dosyć spora.  Sam czas wykonania może się zmieniać z zależności od tego czy czytamy z dysku, czy z pamięci RAM. Ponieważ zapytanie było odpalane trzykrotnie, to dwa ostatnie SELECT-y użyły puli buforów i były szybkie. Z uwagi na spore IO musiałem go jednak sklasyfikować na dole zestawienia. Szkoda, bo pomysł był na miarę pierwszego miejsca …

W środku zestawienia znalazł się Piotr Trychta, który posłużył się tradycyjnym indeksem niegrupującym położonym na wszystkich kolumnach tabeli.

Jeżeli chcielibyście poznać szczegóły rozwiązań, to skrypty wszystkich zawodników można pobrać pod tym linkiem.

Podsumowanie

Pierwszy konkurs urodzinowy już za nami. Tym z was, którzy odważyli się przedstawić swoje pomysły na rozwiązanie gratuluję i jednocześnie informuję, że postaram się dzisiaj z wami skontaktować w celu ustalenia adresu do wysyłki książek.

Czy będzie podobny konkurs za rok?

Prawdopodobnie TAK. Ciekawe, czy duże prawdopodobieństwo wygranej podziała na was mobilizujaco? 🙂

 

Konkurs urodzinowy – ostatnie dni na oddanie rozwiązań :)

Jeszcze tylko kilka dni pozostało na oddanie rozwiązań konkursowych. Zgodnie z regułami do 26 października 2012 można przesyłać skrypty z kodem, a do 28 października 2012 ja mam czas na sprawdzenie waszych odpowiedzi.

Przyznam się, że patrzałem ostatnio w statystyki strony i pobrań bazy konkursowej było całkiem sporo:

Pomimo tego, nikt nie przesłał jeszcze rozwiązania. Jakby nie patrzeć, póki co, szansa na wygranie książki jest naprawdę duża (tym bardziej, że do wygrania są dwie) 🙂

PS. Wszystkie nadesłane zgłoszenia potwierdzę mailem – tak abyście wiedzieli, że na 100% doszło.

Materiały z mojej prezentacji prowadzonej w ramach październikowego spotkania TZG.NET

Slajdy z prezentacji prowadzonej przeze mnie w ramach spotkania Trójmiejskiej Zawodowej Grupy .NET. 9 października 2012 są już dostępne w materiałach do pobrania.

Temat sesji brzmiał następująco: “SQL Server 2012: Unikamy błędów podczas przesiadki

Konkurs urodzinowy czas zacząć !!!

Kilka dni temu opublikowałem wpis, w którym zapowiedziałem rozpoczęcie konkursu T-SQLowego. Miało to nastąpić w niedzielę 7 października 2012 około południa, a więc mniej więcej teraz 🙂

Na czym polega zadanie?

Wyobraźmy sobie, że jesteśmy odpowiedzialni za import danych teleadresowych klientów do odpowiedniej tabeli w naszej  bazie danych. Tabela ta nazywa się dbo.tblCustomers i ma następującą strukturę:

Oprócz tabeli dbo.tblCustomers mamy tabelę przejściową import.dboCustomers, w której umieściliśmy rekordy do zaimportowania:

Tabela z danymi klientów ma jednak pewien feler – jest troszkę duża. Na początek można założyć, że ma około 250 tysięcy rekordów. Nasze zadanie polega na wylistowaniu wszystkich klientów z tabeli importowej, którzy już istnieją w naszej bazie i których nie musimy dopisywać do systemu.

Wyznacznikiem pokrycia rekordów jest wystąpienie identycznych wartości wszystkich kolumn w obu tabelach za wyjątkiem CustomerId i tempIdentifier. Oznacza to, że jeżeli dla klienta z tabeli import.tblCustomers istnieje ktoś w tabeli dbo.tblCustomers, kto ma identyczne imię, drugie imię, nazwisko, płeć, stan cywilny, datę urodzenia i oba pole adresowe, to powinniśmy go wylistować.

Zasady konkursu

  1. Osoby biorące udział w konkursie zgadzają się na publikację swojego imienia i nazwiska (lub ewentualnie nick-u) w tabeli z wynikami
  2. Skrypt konkursowy należy dostarczyć na mój adres e-mail (można go znaleźć w zakładce o mnie i o blogu) do 26 października 2012, a temat wiadomości powinien zawierać frazę „Konkurs T-SQL”
  3. Ogłoszenie wyników nastąpi 28 października 2012
  4. Skrypt konkursowy powinien działać na SQL Server 2012
  5. Wygrywa ten skrypt wybierający dane, który okaże się najszybszy, a w szczególności zajmie najmniej czasu procesora oraz odczytów/zapisów dysku (SET STATISTICS TIME ON, SET STATISTICS IO ON)
  6. Pisząc rozwiązanie można używać wszelkiego rodzaju konstrukcji T-SQL za wyjątkiem konstrukcji wymienionych w pkt. 8. W szczególności można tworzyć indeksy, dodawać kolumny, partycjonować je, tworzyć i procedury, funkcje, używać tabel tymczasowych …
  7. Nie są dozwolone konstrukcje, które trwale połączą dane w celu ich szybszego porównania, np. nie można utworzyć widoku indeksowanego łączącego obie tabele oraz używać kluczy obcych pomiędzy tabelami
  8. Do badania wydajności zapytań pod uwagę będzie brana jedynie część wybierająca dane, np. jeżeli w skrypcie będzie utworzenie indeksu oraz instrukcja SELECT, to czas procesora i liczba odczytów/zapisów będzie badana jedynie dla instrukcji SELECT
  9. Nagrody zostaną przesłane pocztą za potwierdzeniem odbioru
  10. Decudujący głos w przypadku kwestii spornych i interpretacji regulaminu ma organizator konkursu

Nagrody

Do wygrania są dwie książki Beginning Microsoft SQL Server 2012 Programming, których autorami są Paul Atkinson i Robert Vieira.

Przykładowe dane

Przygotowaną przez mnie bazę danych w formacie SQL Server 2012 z przykładowymi danymi można pobrać pod adresem:

http://www.filedropper.com/konkursfull20121007b

Powodzenia !!!