Chicago IE1 class is sold out, so we added another one!

For those of you who were planning to register for our IE1 Immersion Event (on Internals and Designing for Performance) in Chicago at the end of April, I have bad news and good news…

The bad news is that the class reached maximum capacity (30 students) and is sold out.

The good news is that we’ve added another IE1 in Chicago from May 20-24, which opens up another 30 IE1 seats!

This means we have seven classes in Chicago over the four weeks from April 29 – May 24. You can see all the details here.

We hope to see you there!

PS Please note: we do not plan to add any other Immersion Events in 2013 other than what’s currently scheduled. We chose to add another IE1 course in Chicago because we had a few folks on the wait list for which these dates work and, we’re already in Chicago during that week. Adding a class was relatively easy to do because the hotel had availability and all of our gear would already be onsite. We will NOT be adding any other courses or locations in 2013. We are planning a new location in 2014 as well as a new course – IE5: Immersion Event on Relational Data Warehousing. Stay tuned and we hope to see you at an Immersion Event soon!

Buffer pool disfavoring

There’s cool mechanism that the buffer pool has  called disfavoring, that sometimes kicks in to prevent pages from a different database being flushed from the buffer pool when a large operation occurs. When a buffer is no longer required, the buffer can be marked as the least recently used of all the buffers in the buffer pool, meaning that it will used next when the buffer pool needs a new buffer to read a page from disk. This means that a small number of buffers will be used repeatedly instead of filling the buffer pool with pages for some operations.

The places that disfavor buffers when they’re done with them include:

  • During redo of log records, if a page already has a log record’s effects on it and so doesn’t need to be changed
  • During bulk load into a heap
  • Large table scans that are more than 10% of the buffer pool size will disfavor pages instead of forcing pages from other databases to be flushed from memory

And backups don’t use the buffer pool at all so they’re not going to cause buffer pool flushing either.

You can watch disfavoring happening for table scans using the leaf_page_disfavored Extended Event.

DBCC CHECKDB can cause interesting buffer pool behavior as it doesn’t use this method of disfavoring. It does do disfavoring, but doesn’t reuse the pages it’s disfavored during the executing operation. For instance, let’s say you have SQL Server set to use a maximum of 5GB of memory, and have 5 databases that are 1.5GB each. If you cause three of the databases to be fully read into memory, the remaining buffer pool space is only a few hundred MB. If you then run DBCC CHECKDB on the fourth database using WITH TABLOCK, it will read all the pages from that database into memory, and push pages from one of the other databases out. Those pages from the fourth database are all marked as disfavored though, so if you run DBCC CHECKDB on the fifth database using WITH TABLOCK, it will push all the pages from the prior DBCC CHECKDB out and use that space.

Furthermore, if you allow DBCC CHECKDB to create a database snapshot, it will read all the pages in the context of the snapshot, and then drop the snapshot. This could cause some of the rest of the buffer pool to be thrown out, potentially even pages from the database being consistency-checked!

And Resource Governor doesn’t help here at all, as that just controls the query execution memory grant, not the amount of buffer pool space used when reading pages.

New online course on communication skills

My latest online training course was published by Pluralsight on Friday: Communications: How to Talk, Write, Present, and Get Ahead!

The course is 2.5 hours long and draws on my extensive experience communicating and mentoring people on how to communicate more effectively. It’s aimed at everyone who needs to communicate, no matter which industry they work in, and gives plenty of real-life examples.

The course description:

Communicating effectively is one of the most essential aspects of your job, and is the key to progressing in your career. But how do you do it? Most companies do not provide training on how to communicate so this course fills that gap for you.

Firstly you’ll learn the foundational skills necessary for any form of communication. Then you’ll learn the art of running a successful meeting, along with how to handle some specific meeting scenarios like code reviews and 1-1s. You’ll learn how to write effectively, whether emails, articles, or reports, and how to start and maintain a popular blog. Then you’ll move on to planning and writing a presentation, including how to pick a topic, formulate an effective slide-deck template, and write the presentation content, all depending on what type of presentation it is. Finally, you’ll learn how deliver a top-notch presentation, including preparation, managing nerves, and a whole raft of tips and tricks on what to do and what not to do.

In today’s busy work environment you can’t afford to have sub-standard communication skills or you’ll be left behind – but if you watch this course and practice what you learn in it, you’ll boost your skills and start to get ahead! This course is perfect for anyone working in the I.T. industry, with any amount of technical experience and communication skills.

The modules are:

  1. Introduction and Why Communication Skills are Important
  2. Skills Necessary for Good Communications
  3. Meetings
  4. Writing (with a special emphasis on blogging)
  5. Writing a Presentation
  6. Delivering a Presentation

I hope you enjoy it and it helps you progress in your career!

PS Check out the full line-up of our online training courses here.