{"id":617,"date":"2013-10-17T05:20:29","date_gmt":"2013-10-17T12:20:29","guid":{"rendered":"http:\/\/3.209.169.194\/blogs\/erin\/?p=617"},"modified":"2017-04-13T09:19:20","modified_gmt":"2017-04-13T16:19:20","slug":"pass-summit-2013-day-2","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/","title":{"rendered":"PASS Summit 2013: Day 2"},"content":{"rendered":"<p>And day 2 at this year&#8217;s PASS Summit starts with a sweet surprise from Aaron Bertrand ( <a title=\"Aaron&#039;s blog\" href=\"http:\/\/sqlblog.com\/blogs\/aaron_bertrand\/\" class=\"broken_link\">b<\/a> | <a title=\"Aaron on Twitter\" href=\"https:\/\/www.twitter.com\/aaronbertrand\">t<\/a> ), <a title=\"Kinder Eggs\" href=\"https:\/\/en.wikipedia.org\/wiki\/Kinder_Surprise\">Kinder eggs<\/a>.\u00a0 It promises to be a good day.<\/p>\n<p>Today is <a title=\"DeWitt&#039;s bio\" href=\"http:\/\/gsl.azurewebsites.net\/People\/dewitt.aspx\" class=\"broken_link\">Dr. DeWitt<\/a>&#8216;s keynote (did I mention that he&#8217;s a University of Michigan alum? Go Blue!), and here we go&#8230;<\/p>\n<p>8:15 AM<\/p>\n<p>Douglas McDowell, outgoing Vice-President of Finance starts with information about the PASS budget.\u00a0 Summit is the largest source of revenue for PASS, the Business Analytics Conference provided a nice contribution to the budget this year (over $100,000), and PASS has a one million dollars in reserve.<\/p>\n<p>Last year PASS spent 7.6 million dollars on the SQL Server community, with the largest amount spent on the Summit.\u00a0 The second largest cost was the BA Conference.\u00a0 Per Douglas, Headquarters (HQ) is a critical investment for PASS.\u00a0 Right now the IT department has 3 individuals maintaining 520 websites.\u00a0 (And you thought you were a busy DBA!)\u00a0 One initiative for PASS this year, and going forward, is an international expansion, which took about 30% of the budget this past year.\u00a0 Overall, PASS is a very good financial place &#8211; and thanks to Douglas for all his work as a Board member.<\/p>\n<p>8:31 AM<\/p>\n<p>Bill Graziano takes the stage to thank Douglas for his time on the Board, and also Rob Farley who moves off the Board this year.\u00a0 Bill asked Rushabh to come on stage&#8230;Rushabh has been on the Board of Directors for 8 years.\u00a0 He&#8217;s held the positions of VP of Marketing, Executive VP of Finance, and President.<\/p>\n<p>8:34 AM<\/p>\n<p>Incoming PASS President Tom LaRock takes the stage, and starts with an omage to Justin Timberlake and Jimmy Fallon&#8217;s hashtag video.\u00a0 Awesome.\u00a0 Tom introduces the incoming PASS BoD:<\/p>\n<ul>\n<li>Thomas LaRock (President)<\/li>\n<li>Adam Jorgensen (Executive VP of Finance)<\/li>\n<li>Denise McInerney (VP of Marketing)<\/li>\n<li>Bill Graziano (Immediate Past President)<\/li>\n<li>Jen Stirrup (EMEA seat)<\/li>\n<li>Tim Ford (US seat)<\/li>\n<li>Amy Lewis (open seat)<\/li>\n<\/ul>\n<p>Tom has announced the PASS BA Conference &#8211; it will be May 7-9, 2014 in CA.\u00a0 Next year&#8217;s Summit will be November 4-7, 2014 in Seattle, WA.<\/p>\n<p>The WIT Lunch is today &#8211; and I&#8217;m on the panel so I hope to see you there!<\/p>\n<p>8:41<\/p>\n<p>Dr. DeWitt takes the stage, and the topic is Hekaton: Why, What, and How.<\/p>\n<p>I was able to meet the co-author of this session, Rimma Nehme, before today&#8217;s keynote &#8211; she&#8217;s a Senior Researcher in his lab (which is apparently in an old Kroger grocery store building on the Madison campus).<\/p>\n<p>DeWitt says that Hekaton is an OLTP rocket ship.\u00a0 The marketing team has renamed Hekaton to In-Memory OLTP, and DeWitt wants people to vote on Twitter.\u00a0 I am Team #Hekaton&#8230;it just sounds cooler (and it&#8217;s much easier to type).<\/p>\n<p>Covering three things: What, the Why and How of Hekaton.<\/p>\n<p>Hekaton is memory optimized, but durable.\u00a0 It&#8217;s a very high performance OLTP engine, but can be used for more than that.\u00a0 It&#8217;s fully integrated into SQL Server 2014, not a bolt-on.\u00a0 Architected for modern CPUs.\u00a0 (Slide deck will be posted later, I&#8217;ll post the link when I have it.)<\/p>\n<p>Why Hekaton?\u00a0 Many OLTP databases now fit in memory.\u00a0 There are certain kinds of workloads that SQL Server can no longer meet.\u00a0 Historically, OLTP performance has been improved by better software (driven by TPC benchmarks), CPU performance doubling every 2 years, existing DBMS software maturing.\u00a0 DeWitt says we&#8217;ve done as much as we can with mainline products.\u00a0 CPUs are not getting faster &#8211; that well is drive.<\/p>\n<p>Hekaton was picked because the goal was 100X improvements.\u00a0 Not quite there yet.\u00a0 Customers have seen 15-20X.\u00a0 If you&#8217;re burning 1 million instructions\/sec and only yields 100 TPS.\u00a0 If you want to get to 10,000 TPS, but reduce number of instructions\/sec to a value that&#8217;s just not possible.<\/p>\n<p>Getting to 100X with the flood of new products available (e.g. Oracle-TimesTen, IBM-SolidDB, Volt-VoltDB), including Hekaton.\u00a0 Why a new engine?\u00a0 Why not just pin all the tables in memory?\u00a0 That won&#8217;t do the trick.\u00a0 Performance would still be limited by the use of:<\/p>\n<ul>\n<li>latches for shared data structures such as the buffer pool and lock table<\/li>\n<li>locking as the concurrency control mechanism<\/li>\n<li>interpretation of query plans<\/li>\n<\/ul>\n<p>Implications of a shared buffer pool is a consideration.\u00a0 Assume the pool is empty.\u00a0 Query 1 comes along and needs page 7.\u00a0 Is page 7 in the pool?\u00a0 No, a frame is allocated, the query has to wait while the IO occurs.\u00a0 The IO completes and Query 1 can continue.\u00a0 Remember that the data structure is a shared structure.\u00a0 If Query 2 checks for page 7, the buffer manager will report where it is, but Query 2 will be blocked by the latch on page 7 until Query 1 is finished.<\/p>\n<p>(sidebar: a transaction or query only holds 2 latches at a time)<\/p>\n<p>There can be significant contention for latches on &#8220;hot&#8221; pages in the buffer pool.\u00a0 This can be a big performance hit.\u00a0 All &#8220;shared&#8221; data must be protected with latches.<\/p>\n<p>The need for concurrency control&#8230;\u00a0 Query 1: A = A + 100.\u00a0 Database actions: Read A, update the value, write A.\u00a0 Query 2: A = A + 500.\u00a0 Database actions: Read A, update the value, write A.\u00a0 If A was originally 1000, after both queries, it will be 1600.\u00a0 This represents a serial schedule.<\/p>\n<p>Two phase locking developed by Dr. Jim Gray &#8211; which is the standard.\u00a0 Two simple rules:<\/p>\n<ol>\n<li>Before access, query must acquire &#8220;appropriate&#8221; lock type from Lock Manager<\/li>\n<li>Once a query releases a lock, no further locks can be acquired<\/li>\n<\/ol>\n<p>If these rules are followed, resulting schedule of action is equivalent to some serial (good) schedule.\u00a0 Dr. Gray got Turin Award for proof of this, one of two given to database scientists.<\/p>\n<p>(sidebar: can I get a fellowship in Dr. DeWitt&#8217;s lab?\u00a0 Seriously&#8230;)<\/p>\n<p>Still need a deadlock detection\/resolution mechanism also needed (wanted to get rid of this for Hekaton&#8230;which is why it&#8217;s been a 5 year effort).<\/p>\n<p>After a query is parsed and optimized, get an execution plan which is given to a query interpreter that walks the tree of operators and executes them in a particular order.\u00a0 When the database is on disk, the cost of interpreting tree is insignificant.<\/p>\n<p>All these three things (concurrency, query optimization and latches) are why you can&#8217;t get to 100X with current implementations.<\/p>\n<p>Currently in SQL Server, shared data structures use latches.\u00a0 Concurency control is done via locking, and query execution is via interpretation.<\/p>\n<p>With Hekaton, shared data structures are lock-free.\u00a0 For concurrency control, versions with timestamps plus optimistic concurrency control is used.\u00a0 For query execution, compile into DLL that loads when queries are executed.\u00a0 This is what will get us to 100X.<\/p>\n<p>SQL Server has 3 query engines &#8211; relational, apollo (column store), and Hekaton.<\/p>\n<p>To use Hekaton, create a memory-optimized table.\u00a0 Two kinds of durability: schema-only and schema-and-data.\u00a0 (Every Hekaton table must have a primary key index &#8211; can be hash or range.\u00a0 Also have new b-tree in Hekaton, b-w tree, which gives high performance on range queries.) Some schema limitations for V1.\u00a0 Once you&#8217;ve created the table, then populate the table.\u00a0 Run a SELECT INTO statement, or do a BULK LOAD from a file.\u00a0 Just need to make sure it&#8217;s going to fit into memory.\u00a0 Then, use the table.\u00a0 Via standard ad-hoc T-SQL query interface (termed &#8220;interop&#8221;), up to 3X performance boost.\u00a0 Adapt, recompile and execute T-SQL SPs, get 5X-30X improvement.<\/p>\n<p>Query optimization is the hardest part of relational databases, per Dr. DeWitt.\u00a0 Lock-free data structures truly are rocket science &#8211; they make query optimization look simple.<\/p>\n<p>Lock-free data structures invented by Maurice Herlihy at Brown University &#8211; got him elected to the National Academy of Engineering (which is a big deal).<\/p>\n<p>When you think lock-free, think about latch free &#8211; it allows multiple processes with threads to access the same data structure without blocking.\u00a0 Dr. DeWitt has a great slide showing performance differences with multiple threads for latch vs. lock-free.\u00a0 He mentioned that it was a tough slide to animate (and if you see it, you&#8217;ll understand why&#8230;I was actually wondering how he did it).\u00a0 With lock-free (aka latch-free?) &#8211; an update does not block reader threads &#8211; there is no performance hits.\u00a0 Every shared data structure in Hekaton was built around this functionality.<\/p>\n<p>In Hekaton, now have a different concurrency control.\u00a0 It&#8217;s optimistic:<\/p>\n<ul>\n<li>Conflicts are assumed to be rare<\/li>\n<li>Transactions run to &#8220;completion&#8221; without blocking or setting locks<\/li>\n<li>Conflicts detected during a <span style=\"text-decoration: underline;\">Validation<\/span> phase<\/li>\n<\/ul>\n<p>Second component of concurrency control is multiversion &#8211; updating a row creates a NEW version of the row.\u00a0 It works really well when you do this in memory.\u00a0 The third component is timestamps &#8211; every row version has a timestamp:<\/p>\n<ul>\n<li>Each row version has an associated time range<\/li>\n<li>transactions use their begin timestamp to select correct version<\/li>\n<li>timestamps also used to create a total order for transaction to obtain equivalent of serial order<\/li>\n<\/ul>\n<p>This approach drastically reduces number of threads &#8211; dozens not hundreds.<\/p>\n<p>Transaction phases in Hekaton:<\/p>\n<ul>\n<li>Read committed versions of rows<\/li>\n<li>Updates create new tentative versions<\/li>\n<li>Track read set, write set, and scan set<\/li>\n<\/ul>\n<p>When the transaction is done, goes through second phase which is validation, this is where the concurrency control mechanism decides whether transaction can commit.\u00a0 Reaches commit point&#8230;<\/p>\n<p>When transaction begins, current clock value is used as Begin_TS for transaction.\u00a0 At the start of the validation phase, transaction is given unique End_TS.\u00a0 It is used during validation to determine whether it is safe to commit the transaction.\u00a0 Begin_TS are NOT unique, End_TS are ALWAYS unique.<\/p>\n<p>Hekaton tables have either hash or range index on unique key.\u00a0 Rows allocated space from SQL&#8217;s heap storage.\u00a0 Additional indices (hash or range) on other attributes.<\/p>\n<p>Hekaton row format &#8211; all rows tagged with Begin_TS and End_TS.\u00a0 Latest version has infinity on the End_TS ( most recent version of the row).\u00a0 The Begin_TS is the End_TS of the inserting transaction.\u00a0 The End_TS is the logical time when the row was deleted and\/or replaced with a new version.<\/p>\n<p>Multiversioning Example &#8211; Have transaction to increase value by 10,000.\u00a0 A new version of the row is created.\u00a0 Pointers are used to link the rows together in memory.\u00a0 Don&#8217;t think about them being contiguous in memory.\u00a0 The transaction puts its signature (transaction ID) on each row (End_TS of initial row, Begin_TS of new row).\u00a0 When the transaction is later validated and committed, for all rows it updated\/created\/deleted, it will re-access each row with that transaction ID and replace it with the End_TS.\u00a0 NO LATCHES ARE USED!\u00a0 NO LOCKS ARE SET!\u00a0 NO BLOCKING OF ANY TRANSACTIONS!\u00a0 (I&#8217;m not not yelling, neither is Dr. DeWitt.)\u00a0 This is timestamps and versioning &#8211; used on rows AND transactions.\u00a0 Always create new versions of rows when doing updates.\u00a0 Per Dr. DeWitt, competitors are not going to have the same level of performance.<\/p>\n<p>9:27 AM<\/p>\n<p>Optimistic multi-version &#8211; this is the lock\/latch-free mechanism in Hekaton (Dr. DeWitt says it so fast it&#8217;s hard to catch it \ud83d\ude42<\/p>\n<p>When is it safe to discard &#8220;old&#8221; versions of a row?\u00a0 When the begin timestamp of the oldest query in the system is ahead of the last End_TS&#8230;older rows no longer needed.\u00a0 Hekaton garbage collection is non-blocking, cooperative, incremental, parallel, and self-throttling. It has minimal impact on performance.\u00a0 It happens completely under the covers.<\/p>\n<p>Steps:<\/p>\n<ol>\n<li>Updates create new version of each updated row<\/li>\n<li>Transaction use\u00a0 combination of time stamps and versions for concurrency control<\/li>\n<li>A transaction is allowed to read only versions of rows whose &#8220;valid&#8221; time overlaps the Begin_TS of the Xi.<\/li>\n<li>Transactoins essentially never block (WAIT, there&#8217;s a caveat here that Dr. DeWitt is glossing over&#8230;hm&#8230;)<\/li>\n<\/ol>\n<p>Validation Phase<\/p>\n<ol>\n<li>Transaction obtains a <em>unique<\/em> End_TS<\/li>\n<li>Determine if transaction can be safely committed.<\/li>\n<\/ol>\n<p>Validation steps depend on the isolation level of the transaction &#8211; &#8220;new&#8221; isolation levels for Hekaton.<\/p>\n<p>Read Stability key idea: check that each version read is still &#8220;visible&#8221; at the end of the transaction using End_TS.<\/p>\n<p>Phantom Avoidance requires a repeat each scan checking whether new versions have become visible since the transaction started.\u00a0 And if any scan returns additional rows, validation fails.\u00a0 This sounds expensive, but, keep in mind all rows are in memory.\u00a0 It is only performed for transaction running at a serializable level, and it is still a LOT cheaper than acquiring and releasing locks.<\/p>\n<p>There is a also a post-processing phase with 3 sub-phases (which I couldn&#8217;t type fast enough&#8230;oy).<\/p>\n<p>Checkpoints &amp; Recovery &#8211; the data is not lost, have a normal checkpoint process, use logs to generate checkpoints (holds data during shutdown).\u00a0 Restart\/recovery &#8211; starts by loading a known checkpoint and scans log to recover all work since then, fully integrated with HA (giving readable secondaries of memory optimized tables).<\/p>\n<p>Standard method for query execution on a relational system is complicated&#8230;and slow-ish.\u00a0 Regular T-SQL access is Interop.\u00a0 Queries can access and update both Hekaton and disk-resident tables.\u00a0 Interpreted execution limits performance.\u00a0 When you put this all into a DLL, get much faster execution.<\/p>\n<p>Native plan generation &#8211; query through parse tree, produces logical plan and then feeds it into optimizer which produces physical plan &#8211; but these are likely to be different for Hekaton (different algorithms and cost model).\u00a0 Take the physical plan and then translate it into C code (the ugliest C code you&#8217;ve ever seen, no function calls, per DeWitt), goes into C compiler and produces DLL &#8211; which is very slim, only what&#8217;s needed to run the SP.\u00a0 The DLL is then invoked and loaded &#8211; it&#8217;s stored in the catalog.<\/p>\n<p>9:50<\/p>\n<p>Dr. DeWitt just gave a bunch of quantitative data showing performance improvement in terms of transaction\/sec, instructions\/sec and CPU&#8230;I couldn&#8217;t copy it fast enough. \ud83d\ude42<\/p>\n<p>For more details, there is a session at 1:30 PM in Room 208 A-B there is a DBA Focused Session, tomorrow at 10:15 AM there is a dev-focused session.<\/p>\n<p>Dr. DeWitt takes some time to thank his team.\u00a0 This is something I really appreciate about him.\u00a0 He brings Rimma Nehme on stage (who surprised him by showing up today) and gives nothing but praise&#8230;ending with a slide that has a picture of Rimma and a bubble: &#8220;Let the woman drive.&#8221;\u00a0 Love it!<\/p>\n<p>You can download DeWitt&#8217;s deck and supporting files <a title=\"DeWitt&#039;s download\" href=\"http:\/\/gsl.azurewebsites.net\/Portals\/0\/Users\/dewitt\/talks\/pass2013.final.zip\" class=\"broken_link\">here<\/a>.<\/p>\n<p>Thank you Dr. DeWitt!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>And day 2 at this year&#8217;s PASS Summit starts with a sweet surprise from Aaron Bertrand ( b | t ), Kinder eggs.\u00a0 It promises to be a good day. Today is Dr. DeWitt&#8216;s keynote (did I mention that he&#8217;s a University of Michigan alum? Go Blue!), and here we go&#8230; 8:15 AM Douglas McDowell, [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,14],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PASS Summit 2013: Day 2 - Erin Stellato<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PASS Summit 2013: Day 2 - Erin Stellato\" \/>\n<meta property=\"og:description\" content=\"And day 2 at this year&#8217;s PASS Summit starts with a sweet surprise from Aaron Bertrand ( b | t ), Kinder eggs.\u00a0 It promises to be a good day. Today is Dr. DeWitt&#8216;s keynote (did I mention that he&#8217;s a University of Michigan alum? Go Blue!), and here we go&#8230; 8:15 AM Douglas McDowell, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Erin Stellato\" \/>\n<meta property=\"article:published_time\" content=\"2013-10-17T12:20:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-04-13T16:19:20+00:00\" \/>\n<meta name=\"author\" content=\"Erin Stellato\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Erin Stellato\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/\",\"name\":\"PASS Summit 2013: Day 2 - Erin Stellato\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#website\"},\"datePublished\":\"2013-10-17T12:20:29+00:00\",\"dateModified\":\"2017-04-13T16:19:20+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PASS Summit 2013: Day 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/\",\"name\":\"Erin Stellato\",\"description\":\"The SQL Sequel\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158\",\"name\":\"Erin Stellato\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g\",\"caption\":\"Erin Stellato\"},\"sameAs\":[\"http:\/\/3.209.169.194\/blogs\/erin\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/erin\/author\/erin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PASS Summit 2013: Day 2 - Erin Stellato","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/","og_locale":"en_US","og_type":"article","og_title":"PASS Summit 2013: Day 2 - Erin Stellato","og_description":"And day 2 at this year&#8217;s PASS Summit starts with a sweet surprise from Aaron Bertrand ( b | t ), Kinder eggs.\u00a0 It promises to be a good day. Today is Dr. DeWitt&#8216;s keynote (did I mention that he&#8217;s a University of Michigan alum? Go Blue!), and here we go&#8230; 8:15 AM Douglas McDowell, [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/","og_site_name":"Erin Stellato","article_published_time":"2013-10-17T12:20:29+00:00","article_modified_time":"2017-04-13T16:19:20+00:00","author":"Erin Stellato","twitter_misc":{"Written by":"Erin Stellato","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/","url":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/","name":"PASS Summit 2013: Day 2 - Erin Stellato","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#website"},"datePublished":"2013-10-17T12:20:29+00:00","dateModified":"2017-04-13T16:19:20+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/pass-summit-2013-day-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/erin\/"},{"@type":"ListItem","position":2,"name":"PASS Summit 2013: Day 2"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/erin\/","name":"Erin Stellato","description":"The SQL Sequel","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/erin\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/76170223ffffa1df03fd9be5b66cb158","name":"Erin Stellato","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/erin\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c8b485bd54ea26b57e99f79b525f409?s=96&d=mm&r=g","caption":"Erin Stellato"},"sameAs":["http:\/\/3.209.169.194\/blogs\/erin"],"url":"https:\/\/www.sqlskills.com\/blogs\/erin\/author\/erin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts\/617"}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/comments?post=617"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/posts\/617\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/media?parent=617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/categories?post=617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/erin\/wp-json\/wp\/v2\/tags?post=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}