Monthly Archives: Maj 2012

Materiały z Windows 8 Community Launch

Slajdy z prezentacji prowadzonej przeze mnie w ramach konferencji Windows 8 Community Launch Gdańsk 19 maja na Politechnice Gdańskiej są już dostępne w materiałach do pobrania.

Tematem sesji było: „Co nowego w SQL Server 2012 dla programistów

Reklamy

Windows 8 Community Launch Gdańsk już 19 maja na PG

Dzisiejszym wpisem chciałbym was zachęcić do wzięcia udziału w konferencji Windows 8 Community Launch, która odbędzie się 19 maja 2012 na Politechnice Gdańskiej. Organizatorami imprezy są Trójmiejska Zawodowa Grupa .NET oraz Grupa .NET PG.

Podczas konferencji będziecie mogli zaznajomić się z nowościami programistycznymi związanymi z planowanymi premierami Windows 8 i Visual Studio 11 oraz niedawno wydanym SQL Server 2012.

Szczegóły agendy przedstawiam poniżej:

11:00 – 11:50: Windows 8 – oczami programisty

Prelegent: Microsoft Polska

12:00 – 12:50: Jak zdobywać serca kafelkami, czyli o designie aplikacji Metro

Prelegent: Krzysztof Kowalski (Kainos LTD)

13:00 – 13:50: Windows 8 dla programistów Windows Phone 7

Prelegent: Maciej Grabek (Kainos LTD)

14:00 – 14:50: Co nowego w SQL Server 2012 dla programistów

Prelegent: Cezary Ołtuszyk (BEST S.A.), czyli generalnie ja 🙂

15:00 – 15:50: Co nowego w Visual Studio 11

Prelegent: Rafał Gordon (Goyello)

Mam nadzieję, że przekrojowa tematyka konferencji was zainteresowała. Jeżeli tak, to więcej informacji oraz rejestrację można znaleźć na portalu codeguru.pl 

Resource Governor w SQL Server 2012: Maksymalny limit użycia procesora dla puli zasobów

Tych z was, którzy są zainteresowani nowościami w SQL Server 2012 zachęcam to odwiedzenia portalu wss.pl, gdyż właśnie ukazał się tam kolejny artykuł mojego autorstwa:

Resource Governor w SQL Server 2012: Maksymalny limit użycia procesora dla puli zasobów

Na jego łamach opisałem co nowego kryje się w zarządcy zasobów w SQL Server 2012 oraz przedstawiłem przykładowy scenariusz wykorzystania wprowadzonych opcji.

Miłej lektury 🙂

Mity o SQL Server: Zmiana typu kolumny a zwolnienie miejsca w bazie

Dzisiejszym wpisem chciałbym rozpocząć serię postów, która będzie traktować o mitach i nieporozumieniach związanych z działaniem SQL Server-a. Jeżeli więc macie pytania odnośnie działania SQL Server, to zachęcam do ich zadawania w formie komentarzy (lub e-mail). Możliwe, że cześć z nich będzie na tyle ciekawa, że stanie się kolejnymi wyjaśnionymi mitami na moim blogu 🙂

Pierwszy mit

Jednym z mitów na temat SQL Server z którym się niedawno spotkałem jest przekonanie, że:

Jeżeli mamy w naszej bazie tabelę wypełnioną danymi i zmienimy typ wybranej kolumny na mniejszy, to tabela ta zmieni swój rozmiar i odzyskamy w ten sposób miejsce w bazie.

Jak zapewne się domyślacie – nie jest to do końca prawdą …

No i pierwsze obalenie 🙂

Na początek stwórzmy tabelę testową i wpiszmy do niej odpowiednią ilość rekordów:

-- stworzenie tabeli
USE tempdb
GO
CREATE TABLE dbo.testA (
id int PRIMARY KEY,
 valA char(1000) -- typ char będzie łatwo skrócić 
)
GO
-- wpisanie rekordów
DECLARE @i int = 1
WHILE @i < 1000
BEGIN
  INSERT dbo.testA(id, valA)
  VALUES(@i, 'a')
  SET @i = @i+1
END

SQL Server przechowuje dane na 8KB stronach. Ilość stron zajmowanych przez naszą tabelę można sprawdzić następującym zapytaniem:

SELECT OBJECT_NAME(p.object_id) AS NazwaTabeli, 
  a.type_desc, a.total_pages, a.used_pages, a.data_pages
FROM sys.allocation_units a
JOIN sys.partitions p
ON p.hobt_id = a.container_id
WHERE p.object_id = OBJECT_ID('testA')

Jak widać na zamieszczonym powyżej zrzucie ekranu tabela ma przypisane 145 stron, a więc jej wielkość na dysku wynosi 1160KB. Zmieńmy definicję kolumny valA z char(1000) na char(10):

ALTER TABLE testA
ALTER COLUMN valA char(10)

Jak widać ilość zajmowanych stron nie zmieniła się. Aby „odebrać” nasze miejsce z powrotem musimy najpierw przebudować nasz indeks grupujący:

ALTER TABLE testA
REBUILD

Po tej operacji wielkość naszej tabeli uległa zmianie. Teraz jej rozmiar wynosi jedyne 40KB.

Podsumowanie

Zmiana definicji wybranej kolumny nie gwarantuje „odzyskania” miejsca w naszej bazie. Aby tak się stało SQL Server musi najpierw przebudować tabelę. W przypadku dużych ilości danych operacja ta może być bardzo czasochłonna. Jest to jeden z powodów do tego, aby dobrze przemyśleć strukturę bazy podczas projektowania i nie zmieniać definicji kolumn po wdrożeniu aplikacji.