Wednesday, June 29, 2011

I Can Be A Presenter And So Can You!

Last year in October, I went to my first SQL Saturday.  It was my first ever live event that I had attended.  I had heard of PASS I had wanted to attend PASS, but I’d never been.  I had not been to a SSUG, SQL Server User Group for the uninitiated.  I wanted to but the nearest was 1 hour out of the way on a 2 hour one way commute when I lived in DC.  I had watched and viewed the 1st 24 hours of PASS, which was fantastic, but no live events.  SQL Saturday 49 in Orlando was my first and it was fantastic!


I met a lot of great people that day.  Noel Mckiney (@NoelMcKinney | Blog) we had lunch on the lawn and talked for quite a while at the after event, Patrick Leblanc (@patrickdba| Blog), he was at the same table as me and Noel at the after event he was easy to talk to and we had fun just talking about food and New Orleans, and my friend, and ½ of my Future Law Firm Biguns & Balls,  Jack Corbett (@unclebiguns | Blog).


When I went to the after event I knew no one.  Everyone I had listed I had just met that day.  I walked up to Jack and started talking, I don’t know what it was about him but he just seemed like the kind of guy I would want to hang out with.  It is awkward going to a place where you know no one, but the SQL Community has a way of welcoming you in.  We all have a lot in common, once we get talking the conversations have a way of flowing.


I left that evening and I decided that come next year I wanted to present.  As the days wore on I didn’t want to wait until next year.  I looked at what all the presenters were doing and decided I wanted to get myself ready, so I started a blog, hopped on Twitter, created my Linkedin Page, and started working on abstracts for presentations. 


The first SQL Saturday would be Tampa Numero 62.  I submitted 3 abstracts and one was selected.  I was excited beyond belief!  So over the next 2 months I worked on my presentation, presented it internally to all of the DBA’s I work with, got their feedback, tweaked it and went to 62.  There I met up with Kendal Van Dyke (@SQLDBA | Blog ), Andy Warren (@SQLAndy | Blog), and Jack.  We had lunch together and they were talking about SQL Rally, user groups, and the great food they have at Tampa every year.


Kendal had just started MAGICPass, and is the President of the SSUG I now call home, and I asked if they had openings for Speakers, they did and that led to a presentation to MAGICPass in February.  I talked with Jack as well, since he was the President of OPASS, the Orlando SSUG, and that led to a March Presentation for OPASS.  Later that month a speaker had to bow out from presenting to the PASS DBA Virtual Chapter.  Jack had been approached about presenting, and he very graciously suggested me.  It was a great presentation, my first remote, and I loved it!


In April I presented at SQL Saturday 74 in Jacksonville, and had a great SQL Road Trip with Kendal, Dan Taylor (@DBABulldog | Blog), and Karen Lopez (@datachick | Blog).  It was a great SQL Road Trip, and a good chance to talk about the SQL Community and what we can do to make it better.  Also played my first game of SQL Alphabet during the road trip.

I had emailed Jack back in December about the upcoming SQL Rally and he had encouraged me to submit, I owe him a lot for that encouragement.  And in May I made it to my first ever SQL Conference, the Inaugural SQL Rally in Orlando FL.   SQL Rally was my first ever conference for multiple days.  And it was great, I got my first dose of SQL Karaoke, and met a lot of people in person that I had previously only tweeted with.

Fresh off of SQL Rally I thought, why not submit to PASS.  To be honest Dear reader I didn’t expect to get in.  I was realistic about it being the first year that I’m doing this.  And I was floored, the community voted and I got in!  And this year I will be presenting a DEEP DIVE on Compression at PASS!

One year ago today I was still 4 months away from starting a blog, getting on twitter, and attending my 1st ever SQL Saturday.  So Dear Reader, if you are in the same spot then SUBMIT!  Work up and abstract, email me if you need help.  

There is nothing that I have done, that you cannot achieve.  The hardest part of a journey is often the first step.   So what are you waiting for?   Take the first step click Here to go to the SQL Saturday Page, find one near you and start today! Everyone that you see speaking at events started somewhere, and we would love to see you there.

Thanks,

Brad



Tuesday, June 28, 2011

I WANT YOU to Present at SQL Saturday 85 Orlando

I WANT YOU to Present at SQL Saturday 85 Orlando
Dear Reader today I want to make a call for action.  I am part of the orginizing team that is putting together SQL Saturday 85 in Orlando on Saturday September 24th, along with Shawn McGehee (@SQLShawn | Blog), Karla Kay (@karlakay22 | Blog), Kendal Van Dyke (@SQLDBA | Blog), and Andy Warren (@SQLAndy | Blog).   I would like to ask you to submit to be a presenter at SQL Saturday 85 in Orlando. 

“But Balls,” you say, “I’d like to but it seems so difficult.  I don’t know what to do?”

No Worries Dear Reader, I know what to do and I’ll walk you through it!  There are a couple steps and it is easy to do.  I’ll even help you write one up with a couple examples!

WRITE AN ABSTRACT

The first step is to write an Abstract of what you want to present on. An abstract is just a description in paragraph form about the topic that you would like to present on. Let’s take a look at my abstract on  Compression and you’ll see how easy this is.


Page and Row Compression How, When, and Why

Page and Row Compression are powerful new tools. Vardecimal shipped with SQL 2005 SP2, Page & Row with SQL 2008 RTM, and Page & Row with Unicode Compression with SQL 2008 R2. Get an overview into how each version of compression works internally. Learn how your Allocation Units will determine if your data is a candidate for compression. Understand how your tables Update and Scan pattern’s affect the compression types you should consider. And what you should you take into consideration for additional overhead.

 I have seen some really cool titles for presentations out there, if this is your first time don’t feel like you have to break the bank.  You don’t need to have the most AWESOME TITLE EVER the first time you present.  Stick with what you know and start out simple.   You Start off with a Title, mine was pretty simple.  I’m presenting on Page & Row Compression, How you do it, When you would want to, and most importantly Why.  That’s all you need.

So let’s come up with three titles for a possible presentation right now.  Maybe you want to present on THE TOP 10 THINGS YOUR DEVELPERS SHOULD KNOW, SURROGATE KEYS VS. NATURAL KEYS –THE GREAT DEBATE, or PARTITIONING FROM BOUNDRY POINT’S TO SLIDING WINDOWS.        

There we go we have 3 titles to choose from, and as you can see they each lend themselves to what we are going to talk about.  Now we come up with a description.   What is it you want to present on?  I would suggest a topic that you like, enjoy, or feel strongly about.  Preferably you would have some experience with it? 

So let’s write out some descriptions


The Top 10 Things Your Developers Should Know

It’s not easy being a DBA, heck it’s not easy being a Developer.  Too often DBA’s and Developers are put at odds, are we two different species, are they from Venus and we’re from Mars, Why Isn’t Green Lantern the movie more successful?  There are a lot of questions and you want Answers!  Come and find out the top 10 things you Developers should know about SQL Server and a friendly way you can present them.

So there we go, we start off with the statement, “It’s not easy being a DBA, heck it’s not easy being a developer.”  We don’t want to alienate anybody you get just as many developers, managers, and other folks at a SQL Saturday as you do DBA’s.  And then the Question Why isn’t the Green Lantern Movie more successful Why do we have such a hard time communicating?  Then present the solution, and suggest a Take-Away-Item that people will get by attending your presentation. There are a lot of questions and you want Answers!  Come and find out the top 10 things you Developers should know about SQL Server and a friendly way you can present them.”  


Notice I made a couple light hearted jokes in the abstract, you don’t have to do that. My Page & Row Compression Abstract doesn’t have that.  So let’s do one more that is a little more serious.




Surrogate Keys vs. Natural Keys – The Great Debate

An essential part of Database Design is looking at the keys that you’ll have in your tables, You want to make sure that you’ve got a Primary key right?  But do you want that key to be Natural or Surrogate? What is the difference between Natural and Surrogate Keys, What is the Sort order on a Page, and How can they affect performance?  Come find out as we take a step by step process that will build and compare each!


No jokes this time Dear Reader, kind of like an anti-mullet, no Party in the back and all business up front.  


THIS SPEAKER NEEDS AN INTRODUCTION!


So now we get to the second thing you will need, a speaker description.   In my opinion this is the most difficult part because you are describing yourself, that’s not always easy to do.  So let’s take a look at mine.

“Bradley Ball is a MCITP SQL 2005 & MCTS 2008 Database Administrator with over 10 years of IT experience.  Bradley spent 8 years working as a Defense contractor for clients such as the U.S. Army and The Executive Office Of the President of the United States.  He is currently a Sr. SQL Database Administrator for Publix Supermarkets.  He has presented at SQL Saturday 62 in Tampa, for the MAGICPASS and OPASS chapters in FL, and SQL Rally. Bradley can be found blogging on http://www.sqlballs.com/

I kept this pretty simple.  I put my name, the certifications I currently have, my job title, and the number of years I have in experience all within one sentence.  Next the I put some of the cool places I’ve worked for, and what I’m currently doing today.  You can add where you have presented, but that sentence is pretty new for me, because I’ve only been doing this 6 months.  And finally I pointed people here, in-case they want to know more about me.

OPTIONAL ITEMS

If you are on Twitter, YAY!  If not you should be, a large part of our SQL Community, MVP’s, Speakers, Authors are all on Twitter and regularly offer free advice to anyone who asks.  There will be a place in the submission form that asks for a Twitter Handle, mine is SQLBalls.

Linkedin is basically a resume/professional version of Facebook.  It is really easy to get started, and before you know it you’ll connect with some awesome people!  Here’s a quick look at my linkedin Page. And if you hop online, send me an invite.  I'll be happy to add you!

SUBMIT

Now here is the best part Dear Reader, once you have your abstraction you Submit it by CLICKING HERE!  I hope to see you in Orlando!

Thanks,

Brad

Thursday, June 23, 2011

Stay Positive Kiddo




I say this to my kids whenever I see them getting frustrated, or if a negative attitude is threatening a good time.  No parent wants to go to Disney World and hear, “When are we going to do something fun?”  It is a good way not to go back.  Everyone likes to be appreciated.  When you’re treated poorly there is not a lot of incentive to act in a positive way.

We work in a field where things are constantly changing.  We have to constantly keep learning.  For the majority of people out there, Learning is not our day job.  We have another job that we work, where there are demands on our time.  Hopefully we get chances to use the knowledge we spend our time working so hard to learn.  Learning is tough, it takes time, away from our family’s and away from places like Disney World.

In our quest to continue to learn, and to possibly implement we will hit challenges.  You might try to be an early adopter of a new software product, you may be pushing to get productivity tools like Redgate, or you may be pushing to get best practices adopted.  In our job that is outside of learning you are sure to face challenges.  The most important thing is to stay positive.

“But Balls”, you say, “My Boss Doesn’t Listen, my work place has BAD habits, we don’t follow best practices, when I make a point in a meeting no one listens even though I’m right.  They are never going to change why should I keep trying”

I hear you Dear Reader, and if someone in the IT field hasn’t been in the position you are then they are new to the IT field.  It will happen one day.  But when you Stay Positive, you’re not always doing it for the other guy, sometimes you’re doing it for yourself.

IT’S NOT YOU IT’S ME


If you’ve ever been in the spot where you are the one in the room that is always right, but nobody wants to listen to you, it is very frustrating. 

You can feel like you are shouting at the sky, for all the good that you are doing, and you may be tempted to just quit trying.

You’ve got two choices one choice in this case Blame Everyone Else or Take a Long Hard Look at yourself.  Look at the way you try to lead a conversation.  Is it an Argument between two parties or is it a civil discourse? 

When your Manager or Co-worker's say no to an idea of yours, perhaps they have genuine concerns.  When they speak listen, and see if those are concerns you know how to relieve. 

My outlook is that if I don’t know a technology well enough to alleviate those concerns then I shouldn’t be trying to push it on them.  That my require more learning on my part. 

I like to work up Demo’s, it allows me to learn something and then turn around and have something to show.  They can ask questions, and if you don’t have the answers you go an learn and come back with them.

This all get’s back to Trust.   If you spend a lot  of time shouting, or talking normally but with a lot of disdain then that is exactly what people will expect from you.  If they trust they will have a negative experience with you, you have to over come that first and formost.

Stay Positive Kiddo find a better way, it is out there and you can do it!

NEGATIVE <> ENTHUSIASM


Whatever you do, don’t start spewing negativity like a sprinkler.    Back when I was in college I was part of a Fraternity and we needed to host an event to get people to show up, and consider joining. 

I liked to think that I came up with the plans, that I was the “idea guy”.  Eventually I stopped listening to others because I thought my ideas were right.  One day we were having a meeting and one of the guys suggested, in order to get people to show up to our reqruitment event, having a BBQ in front of the Student Union building, buying glow in the dark cup’s to give away with our phone number and letters on it, a theme for it and T-shirts as well.   To top it off that evening we would have a party and use the BBQ to get people excited and show up.

At first I didn’t like it, I was looking at all the NEGATIVES of what could go wrong.  We would be doing this during lunch time in the middle of a school day, people are going to class not a BBQ.  We are doing this on short notice we need to advertise. People are busy running to class they won't want to stop by.  But I stopped and realized that I was the problem, as I looked around the room all of the other guys were very excited about this idea.  I slowly went around the room and realized everyone was on board with this.  Everyone wanted to do it.  I was the only problem. We did it and It turned out great!

I realized that ENTHUSIASIM was key to this.  We went out and had a great time.  The guys all had a blast.  Win or lose this was a great team building moment for us.  Everybody loves ENTHUSIASIM.  If you see a lot of people having fun, our natural incliantion is to look over and say, WOW what are they doing that looks great!

 You’ve got to have a little fun with it Dear Reader, or at least you need to pull together for the good of the team. 

Sometimes when a user says “Why don’t we try X,Y, or Z?”, even if you know your right instead of just saying no, if there is time and Production isn’t on fire in the background, then take the time to give it a try.  Walk them through it and treat it as an opportunity to learn/teach.  Nobody likes to be told “NO” all the time, sometimes you’ve got to give it a shot. 

Deep down we are all SQL Geek's, PROUDLY, you can always make learning and Demo's fun!  Just Stay Positive Kiddo, you can do this!

RE-INVENTING THE WHEEL OR TAKE THIS JOB…



Under this same argument I will put down sometimes you need to find a better job.  Let’s say you take a good hard look at how the conversations are going, and you find you are positive, you’re growing as a professional, but there is a culture at your work that is hostile or even negative.

There are Pro’s and Con’s to any big decision and I would say look at it hard.  But remember that when you interviewed to work for a company, they INTERVIEWED you, and you INTERVIEWED them.  If they didn’t offer you something you wouldn’t be there.   And if that offer turned out to be smoke and mirrors, then use that to learn in your job search.

Look at the good, look at the bad, and make an educated decision.  After the honeymoon phase of a new job you should have certain expectations of your work place, just as they should have of you.


Thanks,

Brad



Tuesday, June 21, 2011

Thank You, I'm Speaking At PASS SUMMIT!



I just wanted to say a Big Thank You to you Dear Reader, and everyone that voted for my session!  I've been selected to speak at the 2011 PASS Summit on Compression.  It is a topic that I have really loved speaking and learning about, I'll be blogging more about the topic as I sharpen up all of my material for a Deep Dive!  Here is the abstract from my submission.

Page and Row Compression are powerful new tools. Page & Row with SQL 2008 RTM, and Page & Row with Unicode Compression with SQL 2008 R2. We can turn it on, we can turn it off, but we want more! What are Access Methods and how in the SQL Engine do they affect Compression? What are the “Gotchas” of Page Compression? How does Compression differ in the way it treats Non-Leaf & Leaf Level pages? What additional functionality did we get in DBCC Page, DMV’s, Perfmon Counters, and Extended Events to support our usage of Compression? How do complex query plans affect Compression? Come find out!


When I found out I wanted to run up and down the halls high-fiving people!  Was one of the thing's on my SQL Bucket List that I wanted to do.  Truthfully I wanted to make it TO the Summit, as I've never been to one. So the Prep is beginning and I'm super excited!

Thinking about going!  You should, and if you register by June 30th you'll recieve $600 off the full price!  Go sign Up Here.

Once again I just want to say a Big Thank You!

Thanks,

Brad

Thursday, June 16, 2011

SQL Rally Q & A Row Compression with Variable Legnth Unicode


This is another follow up on the Q & A’s that came about from SQL Rally, this question was asked by Jim Murphy (@SQLMurph | Blog).   This wasn’t so much of a question as it was a discussion during the presentation. 






I have Slide, see below, that lists the data types that can use Row Compression.  



Row Compression specifically takes all the empty space out of Fixed Length Data Types and stores them as efficiently as possible.  So in essence we take a fixed length field and treat it as if it has a variable size.

Jim very astutely pointed out that I had nvarchar listed as a Data Type that compresses even though it was not a Fixed Length Data Type and Jim wanted to know how Compression worked on an nvarchar Data Type.  To be perfectly honest I botched the answer.  But it led to a wonderful learning opportunity for me.

WHAT IN THE UNIVERSE IS UNI-CODE





The short answer is it is a Universal Character Set that allows for many non-English Characters and is governed by the International Standards ISO/IEC committee.  The Data Types in SQL Server that use Uni-Code are NCHAR & NVARCHAR and they use the UCS-2 character set.  UCS-2 allows exactly two bytes to represent each character.


So what in the wide wide world of sports does this have to do with Compression.  This means that when I declare an NCHAR with a 250 length that it is actually a 500 byte value.  When I type ‘Bradley Ball’ into an NVARCHAR data type instead of taking up 11 bytes of space it takes up 22.  So this encoding can utilize a lot of space that it will need when moving the data to the user, but not necessarily in Storage.


SQL 2008 R2 introduced Unicode Compression to SQL Server.  So to get back to the original question:

“Row Compression works by taking fixed length strings and Compressing out the unused white space from the record, NVARCH is a variable length string how does Row Compression work with a Variable Length Data Type?”


The short answer it strips out the unused extra encoding if there is any to strip out.  The long answer, TO THE DEMO MOBILE!

DUHNA DUHNA DUHNA DUHNA DEMO

Coolness is not Compressed for Batman

So Let’s start off by making our database.

USE master;
GO
IF EXISTS(SELECT name FROM sys.databases WHERE Name=N'demoCOMPRESSIONInternals')
     BEGIN
          DROP Database demoCOMPRESSIONInternals
     END
    
CREATE DATABASE demoCOMPRESSIONInternals
GO

USE demoCOMPRESSIONInternals
GO

Then we’ll create our table and populate it with a couple rows.

IF EXISTS(SELECT NAME FROM sys.tables WHERE name=N'myTable1')
BEGIN
     DROP TABLE dbo.myTable1
END

CREATE TABLE myTable1(
     myID INT IDENTITY(1,1)
     ,productName NCHAR(500) DEFAULT 'some product'
     ,productDescription NVARCHAR(1000) DEFAULT 'Product Description'
     ,PRIMARY KEY CLUSTERED(myID)     
) ; 

DECLARE @i INT
SET @i=0

WHILE (@i<5)
     BEGIN
          INSERT INTO dbo.myTable1(productName, productDescription)
          VALUES(
                   ('some product' + CAST((@i +1) AS VARCHAR(5)))
                   ,('Here is a Generic Product Description' + CAST((@i+2) AS VARCHAR(5)))
                   )
             

          SET @i = @i +1

     END

We’ll set on Trace flag 3604, and we’ll do a DBCC IND to get our page number, *Page Numbers will vary when you do this on your own.


DBCC IND(demoCOMPRESSIONInternals, 'mytable1', 1)
go

DBCC TRACEON(3604)
Go

And here are our pages.


Now a DBCC Page on page 153.

DBCC PAGE('demoCOMPRESSIONInternals', 1, 153, 3)
GO

Now let’s grab an edited look at our records, we mainly want to see the Length to each record in its pre-compressed state.

Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4

myID = 1                            

Slot 0 Column 2 Offset 0x8 Length 1000 Length (physical) 1000

productName = some product1                                                                                     
                                                                                                                 
                                                                                                                
                                                                                                                 
                                                                         

Slot 0 Column 3 Offset 0x3f7 Length 76 Length (physical) 76

productDescription = Here is a Generic Product Description2               

Slot 0 Offset 0x0 Length 0 Length (physical) 0

So we can see that even though Slot 0 Column 3 only contains 38 characters it’s length is 76.  You can see the doubling of the fixed length field as well looking at Slot 0 Column 2, even though it is an NCHAR(500) it has a length of 1000 bytes.  Now let’s apply Row Compression.


ALTER TABLE dbo.myTable1
REBUILD WITH (DATA_COMPRESSION=ROW)
go


We need to do another DBCC IND to get our newly rebuilt pages.

DBCC IND(demoCOMPRESSIONInternals, 'mytable1', 1)
go

Here are the new pages.



Now let’s do a DBCC Page on page 155 and let’s take a look at our data page and get the lengths.

Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 1

myID = 1                             

Slot 0 Column 2 Offset 0xc Length 1000 Length (physical) 13

productName = some product1                                                                                     
                                                                                                                
                                                                                                                
                                                                                                                 
                                                                         

Slot 0 Column 3 Offset 0x19 Length 76 Length (physical) 39

productDescription = Here is a Generic Product Description2              

Slot 0 Offset 0x0 Length 0 Length (physical) 0

We see that the length is reduced greatly.   Slot 0 column 1 going from 4 bytes down to 1.  We see that Slot 2 went from 1000 Characters down to 13.

But the answer to the question lies in column 3 which went from 76 bytes down to 39.  When your nvarchar strings get to be even longer that get’s to be more space savings.  We did a nvarchar 1000.  If we maxed out that value it would be 2000 characters.

So let’s do that, we’ll update our values to max out our strings.

DECLARE @i INT
SET @i=0

WHILE (@i<5)
BEGIN
     UPDATE dbo.myTable1
     SET productname = (REPLICATE('a', 499) + CAST(@i AS VARCHAR(1)))
     WHERE myID=@i

     UPDATE dbo.myTable1
     SET productDescription = (REPLICATE('b', 999) + CAST(@i AS VARCHAR(1)))
     WHERE myID=@i

     SET @i=@i+1
END

And now we’ll take a look at page 155 again.
DBCC PAGE('demoCOMPRESSIONInternals', 1, 155, 3)
go
And what are the lengths of our slots?
Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 1

myID = 1                            

Slot 0 Column 2 Offset 0xc Length 1000 Length (physical) 501

productName = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1           

Slot 0 Column 3 Offset 0x201 Length 2000 Length (physical) 1001

productDescription = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbb1                                

Slot 0 Offset 0x0 Length 0 Length (physical) 0

WOW, so even when we max out our fields, Row Compression still provides us with savings.  Slot 0 Column 2 is 1000 bytes in length, but it’s physical storage is only 501 bytes, and Slot 0 Column 3 our variable length field is physically 2000 bytes but is stored in 1001 bytes.

I’m sure Dear Reader you have noticed that instead of an even 1000 it is 1001, and I would love to tell you that I know why, but I don’t.  I suspect that the 1 byte is some sort of internal byte that contains the information needed for a Unicode Character to be translated by the access methods after compression.  But your guess would be as good as mine.

Thanks,

Brad