Category: "Trivia"
Dieser Blog ist umgezogen // This Blog has moved: http://andreas-wolter.com/blog/
Sep 20th
http://andreas-wolter.com/blog/
Liebe Leser |
Dear Readers |
Die aufwändige Mehrsprachigkeit (Deutsch und Englisch professionell manuell übersetzt) wird beibehalten – aber Layout-technisch anders gelöst. Damit dürfte ich immer noch den einzigen mehrsprachigen IT-Blog weltweit betreiben. |
The complex multilingualism (German and English professionally manually translated) is being continued – but solved differently in terms of layout. With that I most likely still operate the only multilingual IT-Blog worldwide. |
Mein aktueller Artikel, der erstmalig ausschließlich auf der neuen Website zu finden ist, lautet: Optimieren von Workflows mit In-Memory und nativ kompilierten Objekten - oder wie es nicht funktioniert |
My currently last article, which is exclusively available at the new website for the first time, is Optimizing workflows with In-Memory and Natively Compiled Objects - or how it does not work |
Cu at my new Blog
Andreas
Tales from “certification-hell”: What an MCM, MCA, MCSM, MCSM Charter Member, MCSE or MVP really is / Geschichten aus der Zertifizierungs-Hölle: Was ein MCA, MCSM, MCM, MCSM Charter Member, MCSE oder MVP wirklich ist
Sep 30th
(DE) Aber damit ist die Zertifizierung nicht „tot“ oder gar „wertlos“, wie oft falsch zitiert. Da ich über die letzten Jahre immer wieder gefragt wurde, was eigentlich ein MCSM ist oder auch ein „Charter Member“ und wie der MVP da mitspielt, möchte ich dies hier einmal versuchen zu erklären. Für die unlogischen Hintergründe bin ich allerdings nicht verantwortlich – das lag ganz in der Hand von Microsoft Learning. |
(EN) But that does not mean that the certification is “dead” or even “valueless,” as has often been mistakenly referred to. As I have been repeatedly asked over the course of the last years what an MCSM actually is, or a “Charter Member,” and how the MVP fits in there, I would like to try to elaborate on it here. Only I am not responsible for the illogical backgrounds – this was all Microsoft Learning. |
Werfen wir einen Blick auf die Zertifizierungspyramide, wie sie noch lange Zeit bei Microsoft Learning online zu finden war: |
Let’s take a look at the certification pyramid as it had been available at Microsoft Learning online for a long time: |
Das Schöne an dieser Übersicht, ist, dass es auch noch den „alten“ Pfad „MCTS-MCITP-MCM“ zeigt. |
Very conveniently, it still includes the “old” track “MCTS-MCITP-MCM.” |
Damit ist also der Unterschied vom MCM zum MCSM gelöst: Der MCSM ist ebenso wie der MCM die höchste technische Zertifizierung von Microsoft, aber für die neueren Server-Systeme. Für SQL Server nennt sich der MCSM, der auf SQL Server 2012 erworben werden konnte damit auch: Microsoft Certified Solutions Master: Data Platform (hier kann man das offizielle Data Sheet dazu einsehen) Den MCM, Microsoft Certified Master SQL Server gab es für SQL Server 2005 und SQL Server 2008. |
Hence this explains the difference between MCM and MCSM: The MCSM is, just like the MCM, the highest technical certification of Microsoft, but for the recent server systems. For SQL Server, the MCSM that could be obtained on SQL Server 2012 is thus also called: Microsoft Certified Solutions Master: Data Platform (see the official data sheet here). The MCM, i.e. Microsoft Certified Master SQL Server was available for SQL Server 2005 and SQL Server 2008 (see the official data sheet here). |
Was ist bei den Prüfungen zum MCM & MCSM anders als zum MCSE und MCSA? Für die Standard-Zertifizierungen legt man eine Reihe an Multiple-Choice-Examen ab. Die genauen Prüfungen kann man hier nachlesen: MCSE: Data Platform Für den MCM und auch den MCSM war eine weitere („weitere“, da eine bestehende MCITP-Zertifizierung Voraussetzung war) sogenannte „Wissens-Prüfung“ erforderlich, die ebenfalls im Multiple-Choice-Format war. Allerdings waren die Fragen hier deutlich komplexer und praxisnäher. Für den MCM SQL Server 2008 waren 5 Stunden und 25 Minuten angesetzt. Leider konnte man die Prüfung zum MCSM: Data Platform erst ab September 2013 ablegen. |
How do the exams for MCM & MCSM differ from those for MCSE and MCSA? The standard certifications are preceded by a series of multiple-choice exams. You can read the exact exams here: MCSE: Data Platform The MCM as well as MCSM required an additional (“additional” because an existing MCITP certification was prerequisite), so-called “Knowledge-Exam,” equally in multiple-choice format. However, the questions here were significantly more complex and practical. For the MCM SQL Server 2008, the allotted time was 5 hours and 25 minutes. For the MCSM on the basis of SQL Server 2012, tasks had to be solved within 7 hours. – I am not allowed to be more specific here. Unfortunately, it was only from September 2013 onwards that it was possible to pass the exam for MCSM: Data Platform. |
Und damit hoffe ich auch dargelegt zu haben, warum die MCM und erst recht die MCSM Zertifizierung nicht wertlos ist: Eine der ursprünglichen Gedanken für das Master-Programm war es, so zu prüfen, dass man sichergehen konnte, dass derjenige, der besteht, damit echte praktische Erfahrung beim Lösen komplexer Probleme mit SQL Server nachgewiesen hat. Und diese geht ja nicht verloren. Wer Erfahrung mit SQL Server 2005 Datenbanktuning, Desaster Recovery etc. hat, kann auf diese auch unter neueren Versionen zurückgreifen. |
That said, I hope this explains why the MCM certification is not valueless, and certainly not the MCSM certification: One of the original ideas for the Master program was to examine in such a way that one could be sure that the examinee who passed thus proved true practical experience in solving complex problems with SQL Server. And this experience does not get lost. Once you have experience in SQL Server 2005 Database tuning, Desaster Recovery etc. you can also rely on it in more recent versions as well. |
(Das war für mich persönlich der Grund, auch noch den MCSM hinterherzulegen: um meine Kenntnisse auf SQL Server 2012 mit den damals neuen Features AlwaysOn und ColumnStore damit belegen zu können. - Und natürlich, um die „Schmach“ der im ersten Anlauf verbockten Lab-Prüfung mit 82% der benötigten Punktzahl (weil ich die falsche Zeitzone im Blick hatte?) wieder gut zu machen. |
(For me personally, this was the reason to also add the MCSM exam right behind: so I could prove my knowledge in SQL Server 2012 with the then new features AlwaysOn and ColumnStore. – And of course to make up for the “disgrace” of having screwed up the Lab-Exam on the first go with 82% of the required score (because I erred in the time zone?). – And, quite luckily, I was successful at it – and this with no chance at a retry, as I passed it on the last day the exam was available :-): MCSM (Microsoft Certified Solutions Master) Data Platform on SQL Server 2012 |
Für den nächsten Punkt muss ich gestehen, dass die obige Pyramide eigentlich nicht ganz vollständig war. Ursprünglich sah sie so aus: |
Regarding the next point, I admit that the pyramid shown above was actually not quite complete. Originally, it looked like this: |
Was aber ist denn ein MCA? MCA steht für Microsoft Certified Architect. Dieser Zertifizierung, die an der Spitze der Pyramide stand, war nicht so sehr eine technische, d.h. es wurden keine weiteren Praxis-Prüfungen oder ähnliches durchgeführt. Vielmehr musste der- oder diejenige gegenüber einem Gremium, dem „MCA-Board“, Rede und Antwort zu der Durchführung von realen Projekten mit SQL Server stehen musste. Hierbei ging es nicht so sehr um Technik, dafür war man ja bereits MCM, sondern mehr um die anderen Fähigkeiten wie Teamführung und Konzeption, die man als Architekt eben haben sollte. Hier schreibt ein MCA dazu: What is a Microsoft Certified Architect? Deshalb wird der MCM auch oft als die höchste „technische“ Zertifizierung angegeben. Der MCA ist jedoch die uneingeschränkt höchste Zertifizierung von Microsoft. |
So what then is an MCA? MCA stands for Microsoft Certified Architect. This certification, which was at the top of the pyramid, was not so much a technical one – i.e. no further practical exams or the like were carried out. Rather, the examinee was required to answer questions from a committee, the “MCA Board,” on the implementation of real projects with SQL Server. Here, it was not so much about technique – the MCM already covered that part – but rather about other skills such as team leadership and concept competencies. Read here what an MCA says: What is a Microsoft Certified Architect? This is why the MCM is oftentimes referred to as the highest “technical” certification. Yet it is in fact the MCA which is the highest Microsoft certification by far and without restrictions. |
Trivia: Die allererste Runde an MCA’s hatte übrigens noch keine SQL Server Version im Titel, sondern hieß schlicht „MCA: Database“. Davon gibt es insgesamt 26 weltweit. (Und diese Zahl ist wirklich fix, auch wenn nicht alle Namen veröffentlicht wurden.) 2007 wurde aus diesem Titel dann der MCA: SQL Server 2005. Trivia² In der Zeit des „MCA: Database" gab es noch einen „MCA apprentice“, der den ersten Experten verliehen wurde, die durch das „Ranger“-Programm (der Vorläufer des MCM-Programms) gegangen sind, aber aufgrund ihrer Rolle nicht dem MCA-Board gegenübersitzen konnten – diese wurden anschließend zu MCMs. (Danke an boB Taylor und Assaf Fraenkel für die Internas). |
Trivia: The very first round of MCAs did not have any SQL Server Version in the title and was simply called „MCA: Database.“ There are 26 worldwide. (This number is definitely fixed, even if not all names were published.) In 2007, this title became the MCA: SQL Server 2005. Trivia²: In the “MCA: Database“ era there was an “MCA apprentice” which was awarded to the first experts who made it through the “Ranger” program (the forerunner of the MCM program), but who due to their role could not sit across from the MCA Board – they subsequently became MCMs. (Thanks to boB Taylor and Assaf Fraenkel for this in-house information.) |
5 MCAs für SQL Server halten den MCA sowohl unter 2005 als auch 2008. Auf SQL Server 2012 gab es keinen MCA mehr zu erwerben. |
5 MCAs for SQL Server hold the MCA both for 2005 and 2008. For SQL Server 2012, there was no more MCA to be obtained. |
Die letzte, finale und öffentliche Liste der MCAs, MCSMs und MCMs weltweit kann man immer noch hier finden: www.microsoft.com/en-us/learning/mcsm-certification.aspx Es gilt jedoch weiterhin, dass die Liste und damit Anzahl nicht ganz vollständig ist, denn nicht jeder möchte seinen Namen veröffentlich sehen. |
The last, final and public list of the MCAs, MCSMs and MCMs worldwide can still be found here: www.microsoft.com/en-us/learning/mcsm-certification.aspx Note that the list, and hence the number, is still not entirely complete as not everyone wants his name published. |
MCM SQL Server 2005 |
MCA SQL Server 2005 |
MCM SQL Server 2008 |
MCA SQL Server 2008 |
MCSM Data Platform |
33 |
23 (+3) |
172 |
7 (+1) |
7 |
Und da ich diesen Spruch von Brent Ozar, einem MCM-Kollegen aus den USA, so leger fand, hier eine aktualisierte Version davon: |
Because I thought this comment by Brent Ozar, an MCM colleague from the US was so casual, here is an updated version: |
„Es gibt mehr Menschen, die den Mond betreten haben (12) als es MCSMs für SQL Server 2012 gibt (7).“ :-D |
“There are more people who set foot on the moon (12) than there are MCSMs for SQL Server 2012 (7).“ :-D |
Ja, und dann wäre da noch das „Ding“ da. – WERTLOS – warum?: |
Well, and then there is still this „thing“ here. – USELESS – why?: |
Was ist ein MCSM: Charter Member (Microsoft Certified Solutions Master Charter – Data Platform)? Diese „Zertifizierung“, wurde allen MCMs zusätzlich zum MCM gegeben. Ohne irgendeine weitere Prüfung oder Voraussetzung. Also letztlich, dem Worte nach, zertifiziert sie: Nichts. Hart aber wahr: Hier die offizielle Verlautbarung dazu: Existing Microsoft Certified Masters To Receive Microsoft Certified Solutions Master Charter Certification. Warum macht man so etwas? (Zusätzlich wurde übrigens auch der MCSE: Data Platform allen MCMs „geschenkt“. - Zu dem Zeitpunkt hatte ich diesen jedoch bereits auf regulärem Wege in der Tasche, so dass ich gar nicht erst in die Versuchung kam, Prüfungen zu skippen :-)) An dieser Stelle kann ich kaum verbergen, das mich jegliches Verbiegen der Nachweiskraft der Microsoft-Zertifizierungen wenig freut. Leider verwirren diese Aspekte letztlich nur noch mehr in dem Zertifizierungs-Dschungel. Normalerweise wurde ein „Charter Member“ bis dato für das Erreichen einer Zertifizierung innerhalb der ersten 6 Monate nach dem erstmaligen Erscheinen einer Zertifizierung vergeben. (Quellen: What’s the deal with Charter Member certificates?, https://www.microsoft.com/en-us/learning/program-membership.aspx ) |
What is an MCSM: Charter Member (Microsoft Certified Solutions Master Charter – Data Platform)? This “certification” was awarded to all MCMs in addition to the MCM. Without any further exam or prerequisite. Ultimately, accordingly, it certifies: nothing. Hard but true: Here you can read the official statement: Existing Microsoft Certified Masters To Receive Microsoft Certified Solutions Master Charter Certification. Why would they do this? Presumably this was a kind of “consolation” for the discontinuation of the certification series. Initially, it was only intended for a transition period, but after it became clear that the MCSM would not exist for much time the Charter Member was awarded permanently. (By the way, in addition to that the MCSE: Data Platform was “given” to all MCMs. – At that time, though, I had already obtained this title the standard way so I was not even tempted to skip exams :-)). At this point, I can hardly disguise the fact that I am not particularly happy about any bending of value of the Microsoft certifications. Unfortunately, these aspects are ultimately only confusing in the certification jungle. Previously, a “Charter Member” was usually awarded for the achievement of a certification within the first six months after the first appearance of a certification. (Sources: What’s the deal with Charter Member certificates?, https://www.microsoft.com/en-us/learning/program-membership.aspx ) |
Im Endeffekt hat das Charter Member-Logo also keinen wertigen Hintergrund. Deshalb verwende ich es auch kaum je irgendwo – wer erklärt schon gerne auf Nachfrage, dass eine Zertifizierung nichts Reelles bedeutet. |
At the end of the day, the Charter Member logo does not have a significant background. Therefore, I hardly use it anywhere – for, who would like to explain, when asked, that a certification does not really mean anything. |
Kommen wir zu einem ganz andern Zertifikat: SSAS Maestro |
Let’s turn to an entirely different certificate: SSAS Maestro |
Zu dieser seltenen Zertifizierung kann ich weder ein Logo noch eine genaue Zahl an Individuen nennen, die diese halten. |
For this rare certification I can neither give a logo nor an exact number of individuals who hold this certification. |
Bleibt ein Thema: Der MVP Award |
We have one topic left: The MVP Award |
Da kann man berechtigt fragen: „Was hat das hier zu suchen? – Das ist doch gar keine Zertifizierung.“ |
One is entitled to the question: “What’s this got to do with it? – It is not even a certification!” |
An dieser Stelle möchte ich gern aus dem Blog eines ehemaligen MVP, Mitch Garvis zitieren: “Der Microsoft MVP Award ist nicht für Leute, die in ihrer Technologie kompetent sind; er ist für Leute, die ihre Kompetenz mit der Arbeit in der Community teilen, beispielsweise in Blog-Artikeln, als Referent bei Events und Vorträgen, in Tweets, Foren und dergleichen.“ |
At this point, I would like to quote from the blog of a former MVP, Mitch Garvis: “The Microsoft MVP Award is not for people proficient in their technology; it is for people who share their proficiency with community work, such as blog articles, speaking events & presentations, tweets, forums, and such.“ |
Bei Microsoft selber liest es sich wie folgt: „Wer sind MVPs?: Microsoft Most Valuable Professionals, oder MVPs, sind Führungspersönlichkeiten, die ein vorbildliches Engagement gezeigt haben, anderen durch ihre Erfahrung mit Microsoft-Technologien zu helfen um diese optimal zu nutzen. Sie teilen ihre außergewöhnliche Leidenschaft, Ihr Praxiswissen und Ihr technisches Know-how mit der Community und Microsoft.“ „Wie wird man ein MVP?: Es gibt keinen Maßstab wie man ein MVP werden kann, weil dies durch die jeweiligen Technologien und ihre Lebensdauer variiert. Folgende Beiträge beurteilen wir während der Bewertungsphase: Beiträge in online-Foren wie Microsoft Answers, TechNet und MSDN; Wikis und online-Inhalte; Konferenzen und Benutzergruppen; Podcasts, Websites, Blogs und social Media; und Artikel und Bücher. Jeder Beitrag eines Kandidaten wird jedes Jahr mit den Beiträgen anderer Kandidaten verglichen, der sich in der gleichen Expertise befindet.“ |
At Microsoft itself it reads as follows: “Who are MVPs? Microsoft Most Valuable Professionals, or MVPs, are community leaders who’ve demonstrated an exemplary commitment to helping others get the most out of their experience with Microsoft technologies. They share their exceptional passion, real-world knowledge, and technical expertise with the community and with Microsoft.“ “How to become an MVP? While there is no benchmark for becoming an MVP, in part because it varies by technology and its life-cycle, some of the criteria we evaluate include the impact of a nominee’s activities in online forums such as Microsoft Answers, TechNet and MSDN; wikis and online content; conferences and user groups; podcasts, Web sites, blogs and social media; and articles and books. Each nominee's activities are compared to those of other candidates, and active MVPs receive the same level of analysis as new candidates each year.” |
Das bedeutet, es gibt weder ein einheitliches Verfahren, wer diesen Award = „Auszeichnung“ verdient, noch gar eine Prüfung. |
That means there is no standardized procedure as to who deserves this award, nor is there an exam. |
Zitate wie „Von Microsoft ist er aufgrund seines Fachwissens ausgezeichnet mit dem Titel ‘Microsoft Valuable Professional‘ “ sind daher leider irreführend. Auch wenn sich unter den MVPs eine Vielzahl an echten Experten findet, ist das nicht das Kriterium. Es gibt viele zertifizierte Master, die nicht die Zeit oder Gelegenheit haben, ihr Wissen kostenlos (auch das ist ein Aspekt) der Öffentlichkeit zugänglich zu machen – oder die tun es, aber die entscheidenden Personen erfahren nicht davon, oder es gibt eine Länderspezifische Quote an maximalen MVPs je Thema, und so weiter, und ergo werden sie nicht mit dem MVP belohnt. Dann gibt es immer auch die, die seit Jahren schon massiv viel in der Community aktiv sind, auf dutzenden internationalen Konferenzen aufgetreten sind, sogar bereits nominiert worden sind, und dennoch keinen Award erhalten. (Siehe Fälle wie Mark Broadbent) |
Quotes such as “He has been awarded the title ‘Microsoft Valuable Professional’ by Microsoft based on his technical knowledge” are thus misleading. It is true that among the MVPs there are many real experts, but it is not the criterion. There are many certified Masters who do not have the time or opportunity to make their knowledge available to the public for free (this, too, is an aspect) – or they do make it available, but the deciding people do not hear about it, or there is a country-specific quota of a maximum of MVPs per topic, and so on, and therefore they are not awarded the MVP. On the one hand, there are those who have been extremely active in the community for years, have been presenting at dozens of international conferences, have even been nominated, and still do not receive any award. (See cases like Mark Broadbent) Therefore, I can consider myself lucky that I became MVP in 2014 after having been active on conferences in Germany and as far as in the USA since 2009. (6 conferences in 2012, 11 in 2013, and then followed the MVP award in 2014) Therefore, I can consider myself lucky that I became MVP in 2014 after having been active on conferences in Germany and as far as in the USA since 2009. (6 conferences in 2012, 11 in 2013, and then followed the MVP award in 2014) |
MVP, ganz allgemein, kann man werden, wenn man sich sehr für die Community eines Produktes engagiert. Sei es in Online-Foren durch Hilfestellungen, dem Halten von Vorträgen ohne Entgelt auf diversen Konferenzen, umfangreichen Blog-Artikeln oder anderweitigem Engagement, das in irgendeiner Weise der Produktsparte und anderen Kunden hilft. Ein bestimmtes Level an technischer Komplexität ist hier nicht gefordert, mehr die Kontinuität – und die ist, das kann ich aus persönlicher Erfahrung sagen, durchaus zeitaufwändig. Deshalb freue ich mich auch für jeden, der von Microsoft mit dieser Auszeichnung Anerkennung erhält. |
In general, one can become an MVP if you are very active in the community of a product. Be it through assistance in online forums, giving presentations without fee at various conferences, writing comprehensive blog articles, or other forms of commitment that are helpful in some way to the product line or to other clients. This does not require a specific level of technical complexity but rather the continuity – which is, from my personal experience, quite time-consuming. This is why I am happy for anyone who is acknowledged by Microsoft with this award. |
Nominierung Wer jemanden kennt, von dem er meint er hat die Auszeichnung „MVP“ durch seine Aktivitäten in den letzten 12 Monaten (noch ein Kriterium) verdient haben kann ihn hier direkt nominieren: Nominierung als MVP |
Nomination Who knows someone, which he believes he has the deserved to be awarded with the "MVP" by its activities in the last 12 months (another criterion) may nominate him directly here: Nomination as MVP |
Expertise Was ich aus eigener Kenntnis der Master- als auch MVP-Community sagen kann, ist, dass Master in aller Regel eher breiter aufgestellt sind und, wie ja auch in den Prüfungen verlangt, in mehreren Bereichen der Datenbankengine (Beispielsweise Backup & Restore + Indexing + Volltextsuche) sehr versiert sind. Das Bei MVPs scheint es eine höhere Spezialisierung für genau ein Thema zu geben (Beispielsweise Indexing oder Hochverfügbarkeit). Das ist mein persönlicher Eindruck und durch keinerlei Umfragen oder gar Prüfungen fundiert und soll auch nicht negativ wirken. :-) |
Expertise What I can say from my own knowledge of the Master and MVP community is that Masters usually possess a broader spectrum of technical knowledge and, as required in the exams, they are very well-versed in several areas of database engine (for example Backup & Restore + Indexing + Fulltextsearch). As for MVPs, there seems to be a higher specialization in exactly one topic (For example Indexing or High Availability). This is really my personal impression and not evidenced by any surveys or exams, and it is not meant to sound negative. :-) |
Vorteile, des MVP? Für mich sind das der frühzeitige Einblick in zukünftige Entwicklungen von SQL Server noch lange vor Veröffentlichung und der direkte Kontakt zum Product-Team. Unter NDA, mit relativ geringen Beschränkungen offene Gespräche mit Microsoft-Entwicklern, für mich auch speziell dem Security-Team halten zu können, ist ein unschätzbarer Bonus. |
What are the advantages of the MVP? To me, it is the insight at an early stage into future developments of SQL Server long before its release, and the direct contact to the product team. To be able to have open discussions with Microsoft developers, and in my case especially also the Security team – under NDA and with relatively few restrictions – is an invaluable bonus. |
Ich hoffe, ich konnte ein wenig Licht in den Dschungel der Premium-Zertifizierungen von Microsoft bringen. :-) |
I hope I was able to shed some light on the jungle of Microsoft’s premium certifications. :-) |
Happy learning & sharing
Andreas
Maximum number of rows per data page and minimal record size (SQL Server storage internals)
Oct 29th
Maximale Anzahl Zeilen je Datenseite und minimale Datensatzgröße
(DE) Wie viele Zeilen passen eigentlich maximal auf eine Datenseite? – wenn die Datensätze/Records so klein wie möglich sind. Zunächst, Part 1, was ist der kleinstmögliche Datensatz in SQL Server? Um das zu beurteilen, ist es gut, die Datentypen sowie die Struktur eines Datensatzes genau zu kennen. Der nächste Kandidat sind Datentypen, die laut der Liste in Books Online nur 1 byte Speicherplatz benötigen. Das wären folgende: |
(EN) How many rows maximally do actually fit on a data page? – if the data sets/records are as small as possible. First of all, part 1, what is the smallest possible data set in SQL Server? In order to assess this, it is commendable to know exactly the data types as well as the structure of a data set. One could be tempted to assume that a column of the data type bit is the smallest possible data set. The experienced SQL people will know that a bit alone always also requires at least 1 byte in one record – only with several columns of this data type, the place-saving aspect comes into play (bit (Transact-SQL)). The next candidate are data types which according to the list in Books Online use only 1 byte of storage. These would be the following: |
- bit
- char(1)
- binary(1)
- tinyint
Tatsächlich benötigen in diesem besonderen Fall, einer einzigen Spalte je Datensatz, auch Records mit Nettowert von 2 Bytes, 9 Bytes auf der Datenseite: |
As a matter of fact, in this particular case of a single column per record, also records with a net value of 2 bytes use 9 bytes on the data page: |
- char(2)
- nchar(1)
- binary(2)
- smallint
Wie kommt das? Theoretisch würden für einen Datensatz 8 Bytes ausreichen: 4 Bytes: Datensatzkopf (Typ + Zeiger auf Null-Bitmap) Dazu kommt noch der 2 Bytes große Zeiger im Page-Offset, was dann 10 Bytes ergeben würde. Woran das liegt, sehen wir uns an. |
How come? Theoretically, 8 bytes would be sufficient for a data set: 4 bytes: data set head (type + pointer to NULL-bitmap) Add to that the 2-bytes-pointer in the page offset, which would then result in 10 bytes. We will now look at the reason for this. |
Im Folgenden definiere ich 2 Tabellen mit jeweils einer bzw. 2 Spalten von Datentyp tinyint, der ja bekanntlich einen Byte benötigt: |
In the following, I am defining 2 tables with one and 2 columns each of the data type tinyint, which is known to use 1 byte: |
CREATE TABLE T1col
(col1 tinyint null)
GO
CREATE TABLE T2col
(col1 tinyint null, col2 tinyint null)
Danach füge ich zuerst Datenätze mit dem Wert „255“ bzw „255, 255“ ein, und danach einige mit Wert „NULL“. Mit DBCC Page kann man sich den Header der Datenseiten beider Tabellen ansehen, und findet eine kleine Überraschung (Ergebnis reduziert): |
Next, I am inserting, first, data set of the value “255” or “255, 255” and then a few of the value “NULL.” With the DBCC page, one can look at the header of the data pages of both tables, and one will find a small surprise (reduced result). |
Obwohl die Größe der Daten fixer Länge (pminlen) mit 5 bzw. 6 unterschiedlich angegeben wird, ist der freie Speicherplatz auf der Seite (m_freeCnt) identisch! (rot) Der Datensatz belegt in beiden Fällen jedoch 9 Bytes im Page-body (blau). So sieht die Tabelle, bestehend aus einer Spalte, mit einigen Datensätzen gefüllt, auf der Festplatte aus: |
Even though the size of the fixed-length data (pminlen) is specified differently, with 5 and 6 respectively, the free storage on the page (m_freeCnt) is identical! (red) The record, however, uses in both cases 9 bytes in the page body. (blue) This is what the table, consisting of one column, filled up with a few records, looks like on the hard drive: |
Man sieht, dass 9 Bytes belegt sind, jedoch nur, da nach der NULL Bitmap noch ein Byte jedem Datensatz anhängig ist (gelb markiert). Hier die Tabelle mit 2 Spalten: |
One can see that 9 bytes are used, but only because after the NULL bitmap, one extra byte is attached to each data set (marked in yellow). Below, see the table with 2 columns: |
Auch hier also 9 Bytes, mit dem Unterschied, wie das letzte Byte verwendet wird. Noch etwas deutlicher wird es im Binärformat. Das ist die Tabelle mit 2 Spalten – auch diese benötigt 9 Bytes, und man sieht unten, wie die NULL Bitmap zu ihrem Namen kommt: |
Here, too, it is 9 bytes, with the difference being how the last byte is used. It becomes a bit clearer in the binary format. |
Dieser eine Byte, der für mich keinen klaren Nutzen hat, führt also zu dem Ergebnis, das beide Tabellen letztlich 9 Bytes je Record auf der Festplatte benötigen. |
This one byte, which to me does not have any clear purpose, is what leads to the result that both tables ultimately use 9 bytes per record on the hard drive. |
Die minimale Datensatzgröße ist daher in der Tat 9 Bytes. Der zweitgrößte Datensatz ist jedoch auch 9 Bytes. :-D Dabei darf beliebig gewählt werden zwischen 2 Spalten à 1 Byte oder 1 Spalte à 2 Bytes :-) |
The minimal record size is thus in fact 9 bytes. The second biggest record, however, is also 9 bytes. :-D Here, one may freely choose between 2 columns à 1 byte or 1 column à 2 bytes :-). |
- bit
- char(1)
- binary(1)
- tinyint
- char(2)
- nchar(1)
- binary(2)
- smallint
Kommen wir nun zu Part 2: Wie viele Datensätze passen maximal auf eine Datenseite, wenn wir jetzt wissen, dass jeder Datensatz mindestens 9 Bytes + Offset benötigt? |
Let us now look at Part 2: How many records fit maximally on a data page if we now know that every data set requires a minimum of 9 bytes + offset? |
Wir testen mit einer Tabelle, bestehend aus einer Spalte mit Datentyp tinyint – wohlwissend, dass es dasselbe Ergebnis bringen würde, wenn wir smallint oder etwas anderes aus der Liste oben nehmen würden. |
We are testing with one table of one column with datatype tinyint – knowing full well that it would have the same outcome if we were to take smallint or something else from the list above. |
CREATE TABLE T3_Tinyint
(col tinyint NOT NULL)
GO
…Insert 700 Rows…
Sehen wir uns an, wie voll die Datenseite geworden ist, und welche Page_ID diese hat: |
Then, we will check again how full the data page has become, and which Page_ID it has: |
Ausgehend davon, dass eine Datenseite 8192 Bytes groß ist und abzüglich Header 8096 Bytes für Daten zur Verfügung stehen, bedeutet ein Füllgrad von ~95,107%, das noch gut ~396 Bytes zur Verfügung stehen. Durch 11 ergibt das 36. - 36 Datensätze haben also noch Platz! Was sagt DBCC Page dazu? |
Based on the fact that a data page is 8192 bytes in size and that, less the header, 8096 bytes are available for data, a fill degree of ~95,107% means that some ~396 are still available. Divided by 11 this equals 36 – there is still room for 36 records! What does DBCC Page have to say to this? |
Auch hier: 396 Bytes frei – na dann war unsere Überschlagsrechnung gar nicht so schlecht. :-) Das heißt rein rechnerisch müssten weitere 36 Datensätze auf die Seite passen. |
396 bytes free – well, then, our back-of-the-envelope calculation wasn’t so bad at all. :-) That is to say that in purely arithmetical terms, a further 36 records should fit on the page. |
…Insert 36 Rows…
2 Seiten, direkt ab dem 701. Datensatz. |
2 pages, directly from the 701st data set. |
Freier Platz! – Fragmentierung, „Igitt“ ;-) |
Free space! – Fragmentation, „yuck“ ;-) |
Und schon ist die Seite zu glatten 100% gefüllt: 736 Datensätze. |
And just like that, the page is filled with a sleek 100%: 736 records. |
Ja, die Page_ID ist eine andere – aber nicht, weil ich gemogelt hätte, sondern weil die Storage Engine für den Rebuild neuen Platz reserviert, und den alten nach getaner Arbeit freigegeben hat. Und auch auf Platte sieht es jetzt so aus, wie es sein sollte – bis zum Ende aufgefüllt: |
Yes, the Page_ID is a different one – but not because I might have cheated, but because the storage engine allocated new space for the rebuild, and released the old one after the done work. On the drive, too, it now looks exactly how it’s supposed to – filled up to the end: |
Übrigens: Wenn ich anstelle der Heap-Speicherung der Tabelle einen Clustered Index als Struktur gewählt hätte, wären die Daten in den allermeisten Fällen sofort auf der einen Seite zu 100% abgelegt worden Ansonsten gilt auch hier die Regel: „Niemals auf etwas verlassen, was man nicht selbst getestet hat“ ;-) |
By the way, had I chosen a Clustered Index as structure instead of the Heap-storage, in most cases, the data would have been stored immediately to a 100% on the one page Otherwise, the rule also applies here: “Never rely on something you haven’t tested yourself” ;-) |
Ergebnis: - und dabei macht es noch nicht einmal einen Unterschied, ob man eine Spalte mit 1 oder 2 Bytes Größe, oder gar 2 Spalten mit je einem Byte Größe verwendet. Da jeder Datensatz 9 Bytes zzgl. 2 Bytes Record Offset benötigt, haben wir damit die maximale Kapazität einer SQL Server Datenseite mit 8096 Bytes exakt ausgereizt! :-) - Nicht zu verwechseln mit der maximalen Zeilenlänge von 8060 Bytes. |
Result: - and it does not even make a difference, if one uses one column with 1 or 2 bytes in size, or even 2 columns with one byte in size. Since every data record uses 9 bytes plus 2 bytes record offset we will have exactly exhausted the maximum capacity of an SQL Server data page with 8096 bytes! :-) - Not to be confused with the maximal row length of 8060 bytes. |
my nine bytes
Andreas