ICYMI
Last week’s thrilling, stunning, flawless episode of whatever-you-wanna-call-it.
Thanks for watching!
Video Summary
In this video, I delve into various topics related to database management and development. Starting off, I address a common issue where an application’s performance is blamed on the SQL Server or network, only for it to turn out that the real culprit was poor app design. We explore how simple file transfers between data centers can reveal latency issues, emphasizing the importance of practical testing over just theoretical analysis. Moving on, I discuss resources and training for advanced T-SQL, recommending the latest book by Itzik Ben-Gan and Adam Mechanic as a solid reference guide. The conversation then shifts to Microsoft’s managed instances, highlighting the lack of freely available resources and the financial barrier that prevents many from experimenting with these services. Throughout the video, I share my thoughts on potential solutions, such as reaching out to Microsoft for a free instance or considering a podcast format, while also acknowledging the time constraints and challenges in pursuing new projects.
Full Transcript
Are we live? We are live. We are live and lonely. It’s a weird Friday to be doing this though. I get it with me. Do do do do do, do do do do. People where are people? People, people, people. What if you threw an office hours and no one showed up? There’s one person here.
All right, off to a good start. If we accumulate one person per minute, this will be real lively, I think. To show my seriousness for my charity event, I have officially instituted the mustache.
It’s growing in. So by the time bits rolls around, it should be about down to here. But I’ll probably have to groom that in some way.
So, welcome, four of you. It’s nice to see you all. Oh, boy.
Where’d that go? I’ve lost chat. Where did chat go? Oh, man. Someone’s going to have to, like, tweet the questions at me or something.
Because now I don’t know how to get chat back. We had chat. Chat, where are you?
Chat. Chat. Oh, someone left. Someone didn’t want to. Oh, someone came back. Someone came back.
Thank you for coming back. So I’m going to have to do something kind of weird, I think. I’m going to have to go on. I’m going to have to go on this from my phone, I think.
So I can look at the chat window again. Because I have no idea where it went. And there’s no button that says bring back the chat. So bear with me for a second here while I fumble with this nonsense. Doot-a-doo.
Doot-a-doo. Yeah, there we go. Doot-a-doo.
Hey. There’s a live thing. All right. I can see me. All right. Yes. Mike says, nice stash. Thank you, Mike. I can see chat on my phone now.
So we’ve reached this bizarre level of recursion that I don’t even know how to deal with. Woo-hoo! All right. Let’s see.
Let me make this a little bit more tolerable for all of you. I’m going to hold my phone here. James says, best SQL Server trainer. Hands down. Thanks. You should tell that to Brent because he’d love to hear that. That would be the first thing I’d want to do.
Let’s see. I had to leave create a channel so I could chat. Weird. Yes, that is weird. I don’t understand why YouTube would make you do that. Right now, YouTube won’t even let me try to get the chat window back up without ending.
My live stream. So YouTube has some damn work to do on this interface because this is ridiculous. My sweater in a cold region.
Yes, I am in a cold region. I am in the Northeast. But thankfully, I am indoors. And thankfully, see that pipe in the corner right there? That thing gets absolutely nuclear, blazing hot in a way that human words can’t describe.
So even if I tried to get cold in here, I would fail miserably because of that pipe. That pipe… I mean, you could barbecue it.
If you wrap meat around that pipe, it would cook. It would cook through. It’s insane. It’s… It’s… I used to live in an apartment in Astoria, Queens. And when I lived there, the whole building was steam heat.
And during the winter, my room would get ridiculously hot because I had a big steam pipe in it. I had the radiator turned off. There was no radiator.
The radiator was like, no, screw it. The one time I turned the radiator on, it was like boiling. And during the winter, what I could do is have my bedroom window open, put a six-pack of beer in the windowsill. The beer would be nice and cold.
And my room would be temperate. And I could just sit there pleasantly drinking beer with the window open. Like sub-zero, like snowstorm, cold, freezing. It didn’t matter.
All winter long. Let’s do a barbecue next Friday. Yes. All right. We’ll do a barbecue next Friday. That sounds good to me. I like barbecues. Especially when I don’t have to go anywhere for them. It’s the best kind of barbecue.
It’s a stay-home barbecue. The stay-b-queue. The stab-by-queue? I don’t know. It’s all weird. It’s all very weird.
Da-da-da. Da-da-da-da-da. I’m looking at stuff. And I’m not ignoring you.
I promise. I promise I’m not ignoring you. I either stare at myself on YouTube or I look at to see if anyone said anything dumb about me on Twitter. I just bounce back and forth between that.
But you nice people who decided to show up today, why are you here? I don’t know. You can want to ask questions, James. You can ask questions.
What else would you like to do? It’s like office hours except lonelier. Let’s see here.
Let’s see. We’ll start with Marcy’s question. What is the best way to triage network performance if you put your app in a data center? What about…
What about… So… Like, do you mean, like, apps communicating with the SQL Server? Like, are you alive? Or do you mean, like, applications pulling data back and forth across the network? Because it’s two kind of different things there.
In that, like… Okay. So if… When I think about networking in a data center, I think about two things. I think about the path that data has to take from the SAN, right?
From the disks across the channels to get to your SQL Server, to get rid into memory, and then to end up in the application. And then I think about, like, you know, the bobs and weevils that the data has to get across to then go to the application. So there’s two different sort of types of networking that are at play there.
And what you got to be clear about is, like, which one you think the problem is. Because a lot of the times when people think that they have a problem with network performance going from the SQL Server to the app, the problem is really, like, that the app server itself is either underpowered, overloaded. I mean, I’ve seen app servers in balanced power mode that reduced, like, app time by, like, 30 or 40%.
And that was a nightmare. So there’s a lot of different… There are a lot of different angles you could approach that from that I would be more… I would be curious to hear more about.
So Darren says, do you do any work with Azure managed instances or MDs? What’s an MDs? I don’t know.
I don’t know what an MD is. So that might tell you how much work I do with Azure. But I like them. I just don’t have a free one to play with. If you have one that you want me to do something to, I’d be happy to work with it. I have nothing against them.
I think they’re lovely things. I think that the managed instance thing in particular is going to do a lot for Azure adoption as it matures as a product. Just like I would be able to do a lot if I ever matured as a person.
But I refuse. Okay. Treehouse SQL, that is. So, Marcy, start with wait stats. If you’re waiting a lot on async network I.O., then it is time to figure out what those apps are doing.
The other part of that picture is how the apps ingest data. So I’m going to tell a pretty funny story about one time. I know I’ve told this in the past, but I was working at a real job.
And we had this in-house bug tracking software. And the developers for it, like, redid the whole user interface. And they added a bunch of, like, pretty things to it.
So that when you went to, like, log a ticket or look at ticket activity, you could feel like you were looking at, like, a work of art. There were, like, animations. And things would, like, slide across the screen.
But when they rolled it out, everyone said, the SQL Server got really slow. And I was like, okay. Let’s look at the SQL Server. And, of course, I’m looking at the SQL Server, and the SQL Server is bored out of its mind.
It’s, like, barely registering wait stats. I’m like, all right. So let’s capture one of the queries that the app is running. And let’s see how long it just takes to hit it in SSMS.
So we do, and it returns immediately. I’m like, all right. So let’s use one of the app servers that still sees the old UX and see if that’s slow. So we do it over there.
And, like, the bare bones HTML ugly as sin, like, clunky rectangle button, like, gray button website, blazing fast there, too. So we had them disable, like, the new, like, CSS crazy animation stuff on the new one. And when we did stuff there, it was blazing fast, too.
So it was actually the way that the app ingested data and the things that the application did to present that data out to people that made things look slow and that made it look like there was a SQL Server problem or a network problem. But it was really just crappy app design. That’s fun, right?
Fun stuff. Let’s see. App is in a new data center. SQL did not move. So app. Well, Atlanta to Vermont.
That’s a pretty good hike. What, I mean, like, what happens if you, let’s start easy and let’s say what happens if you copy a file between, from one data center to another? Like, let’s just say you, like, want to drag and drop a file.
Let’s see how fast that goes. That’s what I would want to know. I would want to, like, you know, you could ping stuff and trace route and all that other, wire shark and whatever else. But, you know, take, like, a one gig file and just see how long it takes to copy from one thing to another.
That’s always kind of a fun way to do things. Let’s see. Let’s see what they say.
Oh, manage data. Oh, manage database. I see now. So Azure SQL DB, you called MD, you tricky, tricky son of a gun. All right. James says, I am planning on going from DBA to SQL developer.
What is the best training I can get for advanced T-SQL? Boy. So when I think about advanced T-SQL, there’s, like, a real wall that you hit.
Right. So, like, you can’t, there’s, like, no more complicated syntax to do something at some point. Right.
You just, like, what, a row number of windowing function. Nothing, like, there’s not a lot that’s really changed with T-SQL lately. And a lot of the problems that have been solved with it that are hard are pretty well written about. So if you think about stuff like bin packing, traversing hierarchies, doing, like, the last non-null, any sort of, like, ordered set stuff, there’s very few people who do that, or rather who write about that and write about it well.
I mean, really, you’re looking at it’s been gone. So what I always say is, buy the most recent book. Oh, it’s down here somewhere.
Buy the most recent book on T-SQL, which right now is this. And it’s backwards. Oh, man. So it’s called T-SQL querying.
It’s by Itzik Ben-Gahn and my friend Adam Mechanic. And I think that if you just have this book as a reference, you can go, you can get through a lot. Because there’s just, you know, good, thorough explanations of, like, how to solve a lot of common problems that do require more advanced T-SQL.
But it’s not like, you know, when you’re writing these queries, you need, like, there’s a more advanced join you can write. All right? It’s like, a join is a join, pretty much.
Right? You just need to figure out, do I need inner, outer, left, right, up, down, cross, cross apply or something. After that, it’s, you know, the syntax doesn’t, like, get infinitely more complex as you do more things. So I would start with a nice book that just gives you reference material on how to do certain stuff.
And then as you approach different problems, maybe that’s when things get more complicated. Let’s see. What else have you got?
Nothing. No other questions, really? All right. I guess I can start drinking then. No, I have to go to the gym. Maybe I won’t bother.
Maybe I’ll just start drinking. Go to the gym tomorrow. I have so many choices. All right. Any other questions? Anything else? Let’s see. Ooh, let’s see. Darren, firing stuff up. Do you know of any resources for managed instances?
No. So it depends on what you want to learn. Where Microsoft has kind of sadly fallen short is that kind of develop is like kind of like learning resources on stuff.
They used to have these virtual labs where you could go in and for free spin up like, like spin up and set up like a failover cluster availability group, log shipping, mirroring, all sorts of cool bells and whistles. They’re doing away with that and replacing it with something. I’m not really sure what it is.
But, you know, what makes it tough for me to like, you know, get on a high horse and say, hey, I really want to talk about this Microsoft product. Is it if I want to do anything with a managed instance, it’s going to cost me like $1,500 a month because there’s no developer managed instance. There’s no like, hey, you know, you might blog about this and get people to adopt it.
Here’s a managed instance that you can kick around in our there’s like like a fifth of a man of a VM in our billion dollar data center here. Go have fun with it. It would cost me like real money to play with a managed instance and to be able to write more stuff about it.
So I think part of the reason why you might not see as much written about those topics as you want is that it like unless someone has a job where their job is paying for like that hardware and they get to like work with or rather work like paying for that service. And they get to work with that service day in and day out because that’s all their business pay the bills. Oh, you’re kind of out of luck.
So if you know anyone at Microsoft who wants to give me a managed instance to to play with and blog about the greatness and awesomeness of sure. Let’s you can you can give them my email. You can give them my YouTube channel.
I would love to have a chat with them here. Let’s see. Yeah, there’s no playground. You know, that’s something that a lot of people don’t think about when they’re moving their infrastructure to the cloud is like. Like, you know, if you have dev and QA and UAT.
Down, like locally, there’s no dev and QA and UAT up in the cloud that all costs the same money. Right. Like, even like even like even if you say you put developer edition on you’re still paying.
Excuse me for a big, big old honking cloud instance. So that’s a lot of fun to think about in that way. Have you thought about a podcast?
Yeah, except. You know. What what terrifies me about a podcast is that a it might be expensive.
Like, I don’t I don’t know what goes into making a podcast. I don’t know how to like. I just haven’t.
Yeah. And in my head, sure, I would like to do it. But then when I look at the amount of time I have in a day and the amount of stuff that I have to do to try to, you know, make make a dime here and there. I’m sort of like, well, I’d love to have a podcast.
But if unless there’s like a button I can push that makes a podcast for me, I don’t know if I’m going to do it just yet. So maybe in time, maybe maybe when I get some more free time, like after SQL bits. And I do my my pre con there and, you know, hopefully survive everything.
Get to it. But for now, I’m just going to I’m just going to do these. I’m also working under this like sort of like blanket of terror that I’ll show up and there will be no one here. Like, I’m very grateful for the 10 of you who chose to show up and ask me questions and talk to me about stuff.
But, man, if I if I ever if I’m ever here and it’s like like 10 past and there’s two people and no one’s asking a question and I’m staring at my screen uncomfortably making doot doots, then, you know, I don’t want to be like no podcast this week. No one showed up. Like, you know, because what’s challenging about the YouTube format is that there’s no like screen share.
So if like there were two people here who weren’t asking questions, I couldn’t switch it over to now I’m going to show you something. It was like I would have to I don’t know, do something totally different. I would have to use like a like a paid platform, like a go to webinar or something like that.
So lots of stuff that I would have to do differently, but not necessarily in a bad way. Just I’ll get a little bit more infrastructure in place and things will go from there. I think I think that’s a nice way of saying all the stuff that I just said, you know, a little bit more infrastructure in place and then then we’re good to go.
See here. Steve asks, I recently ran SP Blitzcache and a top offender has warnings. We couldn’t find a plan for this query.
The proc is a 2200 line nightmare. Any recommendations on next steps, diagnose, resource? So every time I see that, it’s either because the plan has a recompile or like the store procedure, the plan had a recompile hint on it or something.
And like see what’s ever logged some metrics about it, but didn’t keep the plan or the plan recompile for some other reason. And sometimes like if you, when you see that there should be a bunch of reasons listed in there, why there might not be a plan. So what I would do is just grab the query text or like the store procedure name from one of the other columns and see if you can get an estimated plan for it there.
You know, one of the kind of things that I always wish that I could have put into Blitzcache that I didn’t get a chance to was like just some like validation on if a query plan is there. Because, you know, well, it’s good to be able to say, hey, this is a crazy, you know, awful thing that is executing and doing stuff. If there’s no query plan for it, it kind of defeats the point of a Blitzcache.
So I always wanted to do something where like if like a certain amount of the values were null that came back or whatever, then like we would like, like it would change the value of top. So we would bring back some more plans to, you know, to analyze because if you bring, if like you say top people is 10 and five of the lines are we couldn’t find a plan for this query. And you’re looking at like maybe five query, maybe like five plans that, you know, you know, kind of like limited value.
Like they’re probably at the end too. It’s like kind of stinks. Yeah.
Yeah. See, there’s a lot of different reasons why plans might not be in the cache when we go look and they all kind of stink. Like what, so what I would say is if it’s a big 2200 lines for a procedure, like you’re saying most likely. So there’s a limit to the number of nodes that can exist in XML.
It’s like 128. And after 128, you have to run a special command to get the plan XML from another place and you can’t render it in any way. It’s useful.
It’s a lot of fun. So like you can’t like cast it to XML because it’s too big and it throws errors and you can’t do anything good with it. So there should have been a query in there that said, like gave you like a select star from like a query plan text DMV for the SQL handle that, or plan handle that, that didn’t bring back a plan in BlitzCache. And by the way, BlitzCache support now is 99 cents a minute.
So you owe me like three bucks. Damn. I underpriced myself.
I should have said 299 for the first minute. Could have tripled my money. Damn. Let’s see here. What is the best software source control for SQL Server? I mean, look, Redgate kind of runs away with everything right now.
You know, I don’t, I, I, I have issues with some of their products, but I think for stuff like that, Redgate runs away with it. Hands down. I wouldn’t, I wouldn’t do it.
I wouldn’t go with anything else right now. You know, I would, I would probably get it. I would probably use a different monitoring tool, but for source control and DevOps type stuff, I don’t think that I would trust anyone other than Redgate. At this point.
You know, and that’s, and like, and that’s, you know, just based on, you know, like surveying kind of who does stuff, how involved they are with the SQL Server community. You know, the number of people using them, the available training and kind of expertise on it. Like, this just like Redgate just, you know, just stole the ball from everyone else.
It was just kind of like standing there, holding it over their head. Like, so I just, you know, whatever, whatever you need to do, I would, I would go to them first. So far as I know, they are, if you run into something that, you know, if you have some scenario that one of their products just is not addressing, they are pretty, pretty, pretty responsive.
And, you know, getting that kind of stuff put together, especially if you have a lot of money. Or like, or if you have like a company name that like looks good for them to say, hey, we work with like awesome charity group, corp, or something. I don’t know.
Lots of fun stuff. All right. Do, do, do, do, do, do. I don’t need any of this stuff. All right.
Let’s get rid of some stuff on my phone that was blinking and making YouTube questions not show up properly. Next week, I promise it will be seamless because I won’t click the wrong button near the participants window to make everyone disappear. I apologize.
I like sort of accidentally raptured all of you and sent you to a phantom zone or something. But I’m able to join you from my phone. We have a link.
It’s coming to the light, I guess. All right. Do we have any other questions from the magnificent 10 of you who have shown up? Let’s see here.
Darren says, have you ever worked with in-memory OLTP much, exploring some solutions using it? No, and only because I never got a chance to. So it’s a really, it’s a really niche feature as far as what I think it’s a good fit for.
And all of the use cases that I’ve seen for it have been for incredibly high rate data ingestion applications where the data that you care about doesn’t hang around long. So think about like an online gambling type thing where you have a bunch of events and people want to bet on events and do stuff. But as soon as that event is over, like no one’s going to go back and care about it, right?
Like events over, done, payouts. So when you want to ingest all of that like really high value data that needs to happen immediately, in-memory OLTP can be great for that. And then as soon as an event is over, you kind of flush it out to on disk tables where, you know, people can still get to it, but it’s not going to be, you know, like blazing latch-free, lock-free stuff.
And the reason that it’s really good for that is because with the high rate of data ingestion stuff is that that’s where the lock-free thing is really cool because it’s all of those concurrent inserts and updates and stuff that really need to happen quickly. If your problem is like, well, we need this like data warehouse report to be faster, that’s not a good use case for in-memory OLTP. And if your problem is like we have 5,000 transactions a minute and they’re kind of slow, then you don’t need in-memory OLTP.
You need a much more basic level of like tuning and indexing query stuff because the in-memory OLTP stuff, it really shines, I would say, like the 20, 25, 30,000 transactions a second or a minute or some ungodly number where, you know, you just really need to bang stuff in quick and no one can wait. You need all that like, it was like grandma betting 50 cents on Greyhound. Let’s see here.
Who is your pick for the Super Bowl? What teams are in the Super Bowl? You’d have to tell me that first and then I’ll pick. I have no idea right now. I pay almost no attention to any sports.
Sorry. And I’m not anti-sport. I like watching sports in bars and I like watching sports.
I like watching sports highlights because I think anyone who can make millions of dollars doing that kind of stuff because they’re just that good at it is pretty fun to watch. But, yeah, I have two kids and a wife and the amount of sports watching that goes on in my house is limited to the first like week to month when the Mets don’t suck or when there’s like a lot of anticipation that the Mets might do well this year. And then the Mets tank and no one watches baseball anymore.
So that’s about where my cutoff is. Let’s see here. I’m starting to use more clustered columnstore indexes. Yes.
Anything we should be careful of or anything cool we might be missing. So I’m going to go against nearly everything that I’ve ever said about index maintenance when I talk about columnstore and that it is absolutely positively vital that you maintain your columnstore indexes. There’s all sorts of stuff with like gravestones and deltas and compression and dictionaries and like all sorts of things that if you don’t have your columnstore indexes maintained correctly, you can really boot performance on it.
Joe Obish. I keep telling him to blog about it, but he doesn’t. But maybe he finally will.
But at his talk at pass over last year, which might be out on video now, I’m not sure yet. But at his talk at pass last year, he went into a bit how if, you know, you load a bunch of data into your columnstore indexes, but it’s like loaded inefficiently or like data types are weird, then you can end up with like really, really bad query performance because you don’t get like good dictionary compression or like run length encoding and all the other stuff that goes into making query store. Really, really fast.
So like, like, you think about the number like what makes it what makes columnstore really powerful right now is batch mode. So you work on batches of rows at a time rather than like single row at a time like you do with rowstore indexes. And when you have like, misloaded, let’s call them misloaded columnstore indexes, you end up working on far fewer batches because far fewer of them can fit in like an instruction at a time.
But Joe Obish is the man to watch for that. I think, you know, Nico, I’m pretty sure he has some posts on it. If you want to dig through his, his, his like 150 post archive on columnstore, but that’s, that’s the first thing that I would think of.
Um, so aside from maintenance, uh, you know, being very, very mindful of data types and, um, you know, when you, when you see, when you, or when you’re working with columnstore, there are like certain op like plan operators that you just want to avoid. Like constantly like nested loops, merge joins, uh, sorts, um, uh, anything like when operators execute in row mode rather than batch mode for some, for whatever reason, it’s a lot of stuff that can go wonky with those queries. So what, but what I love columnstore and I love what they’ve been doing with it.
There’s still a lot of, you know, manual labor type stuff that you, you have to do when you’re, when your queries are on to make sure that you’re getting the best performance of it. Um, everything is better in bars. Yes.
Everything absolutely is better in bars. Except sleep. Sleeping in bars is not, not better. It’ll get you thrown out pretty quickly. All right.
Any other questions? Anyone else? Fire something fun at me. Let’s see. I don’t know. I, I, I was wondering if I was, uh, no, nothing on Twitter. Okay.
So sometimes I always think that someone might ask a question on Twitter if they can’t show up here on the YouTube channel. Uh, let’s see. Some deranged creep wants to know my age, sex and location. And I’m just going to call, I’m just going to call in the Chris Hansen patrol on you.
None of that. Uh, am I excited about bits? Yes, I do have the costume and I’m, I’m, I’m disappointed that you didn’t notice that the picture that I put on Twitter about the costume because it is fully loaded. It is here.
The only thing that I couldn’t get is, so what’s funny is when I was, when I was talking to Andy Mallon about, about like the, the costume that I was buying, he, he was all excited. He was just like, he, he thought he like, he had like a, like a, like a dead on thing in mind. I was like, look, I can do a lot of it.
And he was like, well, did, did you get a racer back tank top? And I was like, I don’t know what that is. I bought like regular tank tops, which I’m still going to look fat in, but I can’t like imagine it like, like a racer back tank top. And then like, I got all, I got all nervous and I was like, uh, Hey, uh, I’m going to go look on Amazon for a racer back tank top.
And I don’t think that a clothing company has made a racer back tank top for men since Freddie Mercury wore one. Um, and even at that juncture, he might have just worn one that was made for a woman because he was a, he was a pretty slender fella, but not me. And like, I, I tried to look at, uh, like, you know, women’s sizes that, that might, might fit a man of my stature.
And, um, then I guess got depressed. I didn’t want to get into that. Uh, bringing up, hoping I’d bring it up for a preview.
Uh, I’d have to go get it. I don’t have it in my office. It’s the one thing that I managed to talk my wife into not making me keep in the office because everything else that might vaguely belong to me is jammed into my office. It is crazy.
Do you have a pick of him? I can, oh, geez, Louise. Let’s see here. How can I do this? Uh, all right. Let’s see. Uh, where is, how do I get to a browser now? This is very challenging.
You guys are pushing the limits of my, my technical ability here. Freddie Mercury. Live aid.
Come on, baby. Come on. Don’t fail me now. There we go. Images. No, not videos. Images. Come on, phone.
Come on. There we go. All right. So this is a very close approximation of what I will look like at SQL bits. Uh, I can’t do justice to his armpit hair. And, um, I’m, I’m not going to be able to lose 120 pounds, but I have that outfit pretty well nailed.
Except for the racer back tank top. That’s just going to be a regular tank top. I don’t know if I can tuck mine in.
That might, that might get dangerous. I don’t know how that’s going to go. That might not be a great idea. Excuse me. Jeez Louise. It is dry in here. All right.
Let’s see. Get back into the old YouTube. Come on, baby. There we go. Yeah. Ah, practice the pose. Live stream, picture and picture.
Thank you. That is the one thing that I have managed to get right in my time on YouTube is live stream, picture and picture. Uh, when I tried to schedule these, starting this up was the most painful thing I’ve ever done. I had to pay 10 bucks for an encoder or a decoder called like Wirecast.
And every time I went to start it up, it would tell me that my camera didn’t work. And there would be like, like blue screen, like not like computer blue screens, but it would just show me like a blue screen preview. And it was terrible.
So like, but like when I just hit like the go live button, it’s dead simple. When I try to schedule these, it’s miserable. I’m going to have to do something really. Uh, let’s see.
Any other, any other fun questions? You creeps staring at my poor office. Let’s see.
Zach asks. No, no. That was the same person. Practice the pose. No. I mean, it’s just the arm up, right? This isn’t a good camera for that, for me to practice. It’ll be fun.
It’ll be fine. Let’s see. We have, we do have, we have a question or maybe we have a statement. I don’t know. We’ll figure it out in a minute. Sam says, uh, by tuning indexes on a secondary moving reporting to read only secondaries are really popular movement in my workplace.
I’m concerned about how to manage the disparate index needs. Yeah. Uh, I, I wrote a post about this recently that is scheduled.
I think for like two weeks from now. Blogging my butt off. Uh, but it’s, you know, it, it’s, it’s tough to like, depending on how you’re replicating the data, you know, you, you, you usually can’t have a different set of indexes on a secondary. From the, what you have on the primary.
And what makes things even more challenging. And I think this might be the third week in a row that I’ve said this is that, uh, the index DMVs on like readable secondaries don’t migrate their data back to the primary. So you have a really hard time figuring out like what indexes are good for anything.
It’s like looking around like, uh, okay, this one looks good here. This one looks good there. I don’t, you know, it all just goes to heck at some point. Uh, and it would be, it would be nice if there was like something that coagulated all that DMV data, but there is nothing at this point.
You would have, you would have, you are stuck doing that on your own, writing your own scripts to push data around. Yeah. But yeah.
Uh, so like, unless you use some form of like capital R replication, right? By that, I mean like not AGs or log shipping or mirroring where you can apply a script afterwards to make different indexes on a, on a, on a secondary available than what are just on the primary. Uh, yeah.
Kind of out of luck on that. And that’s, and that’s too bad because I know that with availability groups, at least on readable replicas, SQL Server is able to create like temporary statistics. So it would be nice if you could create temporary indexes too.
That would be fun. Aggregate, not quite. No, I like coagulate better. I think coagulate sounds better as a word. Aggregate.
Aggregate just sounds aggressive and angry. Not fun. Coagulate. It’s like, we’re going to go, we’re going to go have fun. We’re doing it together. Co-agulate. A bloody mess.
Why? Lots of things coagulate. Pancake batter. Uh, fat. I don’t know.
What else? What else coagulates? I’m trying to think of something that coagulates in a pleasant way now and I’m starting to see your point. Maybe coagulate isn’t good either. Maybe there’s no way, there’s no good way, no good way to say you bring things together. There’s no good single word for that.
They’re all just ugly. All right. Uh, anything else? Any other fun questions? Observations?
Hmm. Hmm. Hmm. All right, folks. Uh, thank you for joining me. Uh, I appreciate all of you showing up and asking stuff. I will be back next week at the same time doing the same thing.
And hopefully you’ll be able to make it then. I’ll see you next time. Thank you. And, uh, next time I will have the Freddie Mercury costume ready to show you. I think we’re getting, we’re getting close enough to bits now where I can, I can, I can do the reveal.
So I will see you next week. Not dressed up, but I’ll, I’ll have it. I’ll have it. I’ll tease you a little. Maybe I’ll wear some little shorts or something.
Bye.
Video Summary
In this video, I delve into various topics related to database management and development. Starting off, I address a common issue where an application’s performance is blamed on the SQL Server or network, only for it to turn out that the real culprit was poor app design. We explore how simple file transfers between data centers can reveal latency issues, emphasizing the importance of practical testing over just theoretical analysis. Moving on, I discuss resources and training for advanced T-SQL, recommending the latest book by Itzik Ben-Gan and Adam Mechanic as a solid reference guide. The conversation then shifts to Microsoft’s managed instances, highlighting the lack of freely available resources and the financial barrier that prevents many from experimenting with these services. Throughout the video, I share my thoughts on potential solutions, such as reaching out to Microsoft for a free instance or considering a podcast format, while also acknowledging the time constraints and challenges in pursuing new projects.
Full Transcript
Are we live? We are live. We are live and lonely. It’s a weird Friday to be doing this though. I get it with me. Do do do do do, do do do do. People where are people? People, people, people. What if you threw an office hours and no one showed up? There’s one person here.
All right, off to a good start. If we accumulate one person per minute, this will be real lively, I think. To show my seriousness for my charity event, I have officially instituted the mustache.
It’s growing in. So by the time bits rolls around, it should be about down to here. But I’ll probably have to groom that in some way.
So, welcome, four of you. It’s nice to see you all. Oh, boy.
Where’d that go? I’ve lost chat. Where did chat go? Oh, man. Someone’s going to have to, like, tweet the questions at me or something.
Because now I don’t know how to get chat back. We had chat. Chat, where are you?
Chat. Chat. Oh, someone left. Someone didn’t want to. Oh, someone came back. Someone came back.
Thank you for coming back. So I’m going to have to do something kind of weird, I think. I’m going to have to go on. I’m going to have to go on this from my phone, I think.
So I can look at the chat window again. Because I have no idea where it went. And there’s no button that says bring back the chat. So bear with me for a second here while I fumble with this nonsense. Doot-a-doo.
Doot-a-doo. Yeah, there we go. Doot-a-doo.
Hey. There’s a live thing. All right. I can see me. All right. Yes. Mike says, nice stash. Thank you, Mike. I can see chat on my phone now.
So we’ve reached this bizarre level of recursion that I don’t even know how to deal with. Woo-hoo! All right. Let’s see.
Let me make this a little bit more tolerable for all of you. I’m going to hold my phone here. James says, best SQL Server trainer. Hands down. Thanks. You should tell that to Brent because he’d love to hear that. That would be the first thing I’d want to do.
Let’s see. I had to leave create a channel so I could chat. Weird. Yes, that is weird. I don’t understand why YouTube would make you do that. Right now, YouTube won’t even let me try to get the chat window back up without ending.
My live stream. So YouTube has some damn work to do on this interface because this is ridiculous. My sweater in a cold region.
Yes, I am in a cold region. I am in the Northeast. But thankfully, I am indoors. And thankfully, see that pipe in the corner right there? That thing gets absolutely nuclear, blazing hot in a way that human words can’t describe.
So even if I tried to get cold in here, I would fail miserably because of that pipe. That pipe… I mean, you could barbecue it.
If you wrap meat around that pipe, it would cook. It would cook through. It’s insane. It’s… It’s… I used to live in an apartment in Astoria, Queens. And when I lived there, the whole building was steam heat.
And during the winter, my room would get ridiculously hot because I had a big steam pipe in it. I had the radiator turned off. There was no radiator.
The radiator was like, no, screw it. The one time I turned the radiator on, it was like boiling. And during the winter, what I could do is have my bedroom window open, put a six-pack of beer in the windowsill. The beer would be nice and cold.
And my room would be temperate. And I could just sit there pleasantly drinking beer with the window open. Like sub-zero, like snowstorm, cold, freezing. It didn’t matter.
All winter long. Let’s do a barbecue next Friday. Yes. All right. We’ll do a barbecue next Friday. That sounds good to me. I like barbecues. Especially when I don’t have to go anywhere for them. It’s the best kind of barbecue.
It’s a stay-home barbecue. The stay-b-queue. The stab-by-queue? I don’t know. It’s all weird. It’s all very weird.
Da-da-da. Da-da-da-da-da. I’m looking at stuff. And I’m not ignoring you.
I promise. I promise I’m not ignoring you. I either stare at myself on YouTube or I look at to see if anyone said anything dumb about me on Twitter. I just bounce back and forth between that.
But you nice people who decided to show up today, why are you here? I don’t know. You can want to ask questions, James. You can ask questions.
What else would you like to do? It’s like office hours except lonelier. Let’s see here.
Let’s see. We’ll start with Marcy’s question. What is the best way to triage network performance if you put your app in a data center? What about…
What about… So… Like, do you mean, like, apps communicating with the SQL Server? Like, are you alive? Or do you mean, like, applications pulling data back and forth across the network? Because it’s two kind of different things there.
In that, like… Okay. So if… When I think about networking in a data center, I think about two things. I think about the path that data has to take from the SAN, right?
From the disks across the channels to get to your SQL Server, to get rid into memory, and then to end up in the application. And then I think about, like, you know, the bobs and weevils that the data has to get across to then go to the application. So there’s two different sort of types of networking that are at play there.
And what you got to be clear about is, like, which one you think the problem is. Because a lot of the times when people think that they have a problem with network performance going from the SQL Server to the app, the problem is really, like, that the app server itself is either underpowered, overloaded. I mean, I’ve seen app servers in balanced power mode that reduced, like, app time by, like, 30 or 40%.
And that was a nightmare. So there’s a lot of different… There are a lot of different angles you could approach that from that I would be more… I would be curious to hear more about.
So Darren says, do you do any work with Azure managed instances or MDs? What’s an MDs? I don’t know.
I don’t know what an MD is. So that might tell you how much work I do with Azure. But I like them. I just don’t have a free one to play with. If you have one that you want me to do something to, I’d be happy to work with it. I have nothing against them.
I think they’re lovely things. I think that the managed instance thing in particular is going to do a lot for Azure adoption as it matures as a product. Just like I would be able to do a lot if I ever matured as a person.
But I refuse. Okay. Treehouse SQL, that is. So, Marcy, start with wait stats. If you’re waiting a lot on async network I.O., then it is time to figure out what those apps are doing.
The other part of that picture is how the apps ingest data. So I’m going to tell a pretty funny story about one time. I know I’ve told this in the past, but I was working at a real job.
And we had this in-house bug tracking software. And the developers for it, like, redid the whole user interface. And they added a bunch of, like, pretty things to it.
So that when you went to, like, log a ticket or look at ticket activity, you could feel like you were looking at, like, a work of art. There were, like, animations. And things would, like, slide across the screen.
But when they rolled it out, everyone said, the SQL Server got really slow. And I was like, okay. Let’s look at the SQL Server. And, of course, I’m looking at the SQL Server, and the SQL Server is bored out of its mind.
It’s, like, barely registering wait stats. I’m like, all right. So let’s capture one of the queries that the app is running. And let’s see how long it just takes to hit it in SSMS.
So we do, and it returns immediately. I’m like, all right. So let’s use one of the app servers that still sees the old UX and see if that’s slow. So we do it over there.
And, like, the bare bones HTML ugly as sin, like, clunky rectangle button, like, gray button website, blazing fast there, too. So we had them disable, like, the new, like, CSS crazy animation stuff on the new one. And when we did stuff there, it was blazing fast, too.
So it was actually the way that the app ingested data and the things that the application did to present that data out to people that made things look slow and that made it look like there was a SQL Server problem or a network problem. But it was really just crappy app design. That’s fun, right?
Fun stuff. Let’s see. App is in a new data center. SQL did not move. So app. Well, Atlanta to Vermont.
That’s a pretty good hike. What, I mean, like, what happens if you, let’s start easy and let’s say what happens if you copy a file between, from one data center to another? Like, let’s just say you, like, want to drag and drop a file.
Let’s see how fast that goes. That’s what I would want to know. I would want to, like, you know, you could ping stuff and trace route and all that other, wire shark and whatever else. But, you know, take, like, a one gig file and just see how long it takes to copy from one thing to another.
That’s always kind of a fun way to do things. Let’s see. Let’s see what they say.
Oh, manage data. Oh, manage database. I see now. So Azure SQL DB, you called MD, you tricky, tricky son of a gun. All right. James says, I am planning on going from DBA to SQL developer.
What is the best training I can get for advanced T-SQL? Boy. So when I think about advanced T-SQL, there’s, like, a real wall that you hit.
Right. So, like, you can’t, there’s, like, no more complicated syntax to do something at some point. Right.
You just, like, what, a row number of windowing function. Nothing, like, there’s not a lot that’s really changed with T-SQL lately. And a lot of the problems that have been solved with it that are hard are pretty well written about. So if you think about stuff like bin packing, traversing hierarchies, doing, like, the last non-null, any sort of, like, ordered set stuff, there’s very few people who do that, or rather who write about that and write about it well.
I mean, really, you’re looking at it’s been gone. So what I always say is, buy the most recent book. Oh, it’s down here somewhere.
Buy the most recent book on T-SQL, which right now is this. And it’s backwards. Oh, man. So it’s called T-SQL querying.
It’s by Itzik Ben-Gahn and my friend Adam Mechanic. And I think that if you just have this book as a reference, you can go, you can get through a lot. Because there’s just, you know, good, thorough explanations of, like, how to solve a lot of common problems that do require more advanced T-SQL.
But it’s not like, you know, when you’re writing these queries, you need, like, there’s a more advanced join you can write. All right? It’s like, a join is a join, pretty much.
Right? You just need to figure out, do I need inner, outer, left, right, up, down, cross, cross apply or something. After that, it’s, you know, the syntax doesn’t, like, get infinitely more complex as you do more things. So I would start with a nice book that just gives you reference material on how to do certain stuff.
And then as you approach different problems, maybe that’s when things get more complicated. Let’s see. What else have you got?
Nothing. No other questions, really? All right. I guess I can start drinking then. No, I have to go to the gym. Maybe I won’t bother.
Maybe I’ll just start drinking. Go to the gym tomorrow. I have so many choices. All right. Any other questions? Anything else? Let’s see. Ooh, let’s see. Darren, firing stuff up. Do you know of any resources for managed instances?
No. So it depends on what you want to learn. Where Microsoft has kind of sadly fallen short is that kind of develop is like kind of like learning resources on stuff.
They used to have these virtual labs where you could go in and for free spin up like, like spin up and set up like a failover cluster availability group, log shipping, mirroring, all sorts of cool bells and whistles. They’re doing away with that and replacing it with something. I’m not really sure what it is.
But, you know, what makes it tough for me to like, you know, get on a high horse and say, hey, I really want to talk about this Microsoft product. Is it if I want to do anything with a managed instance, it’s going to cost me like $1,500 a month because there’s no developer managed instance. There’s no like, hey, you know, you might blog about this and get people to adopt it.
Here’s a managed instance that you can kick around in our there’s like like a fifth of a man of a VM in our billion dollar data center here. Go have fun with it. It would cost me like real money to play with a managed instance and to be able to write more stuff about it.
So I think part of the reason why you might not see as much written about those topics as you want is that it like unless someone has a job where their job is paying for like that hardware and they get to like work with or rather work like paying for that service. And they get to work with that service day in and day out because that’s all their business pay the bills. Oh, you’re kind of out of luck.
So if you know anyone at Microsoft who wants to give me a managed instance to to play with and blog about the greatness and awesomeness of sure. Let’s you can you can give them my email. You can give them my YouTube channel.
I would love to have a chat with them here. Let’s see. Yeah, there’s no playground. You know, that’s something that a lot of people don’t think about when they’re moving their infrastructure to the cloud is like. Like, you know, if you have dev and QA and UAT.
Down, like locally, there’s no dev and QA and UAT up in the cloud that all costs the same money. Right. Like, even like even like even if you say you put developer edition on you’re still paying.
Excuse me for a big, big old honking cloud instance. So that’s a lot of fun to think about in that way. Have you thought about a podcast?
Yeah, except. You know. What what terrifies me about a podcast is that a it might be expensive.
Like, I don’t I don’t know what goes into making a podcast. I don’t know how to like. I just haven’t.
Yeah. And in my head, sure, I would like to do it. But then when I look at the amount of time I have in a day and the amount of stuff that I have to do to try to, you know, make make a dime here and there. I’m sort of like, well, I’d love to have a podcast.
But if unless there’s like a button I can push that makes a podcast for me, I don’t know if I’m going to do it just yet. So maybe in time, maybe maybe when I get some more free time, like after SQL bits. And I do my my pre con there and, you know, hopefully survive everything.
Get to it. But for now, I’m just going to I’m just going to do these. I’m also working under this like sort of like blanket of terror that I’ll show up and there will be no one here. Like, I’m very grateful for the 10 of you who chose to show up and ask me questions and talk to me about stuff.
But, man, if I if I ever if I’m ever here and it’s like like 10 past and there’s two people and no one’s asking a question and I’m staring at my screen uncomfortably making doot doots, then, you know, I don’t want to be like no podcast this week. No one showed up. Like, you know, because what’s challenging about the YouTube format is that there’s no like screen share.
So if like there were two people here who weren’t asking questions, I couldn’t switch it over to now I’m going to show you something. It was like I would have to I don’t know, do something totally different. I would have to use like a like a paid platform, like a go to webinar or something like that.
So lots of stuff that I would have to do differently, but not necessarily in a bad way. Just I’ll get a little bit more infrastructure in place and things will go from there. I think I think that’s a nice way of saying all the stuff that I just said, you know, a little bit more infrastructure in place and then then we’re good to go.
See here. Steve asks, I recently ran SP Blitzcache and a top offender has warnings. We couldn’t find a plan for this query.
The proc is a 2200 line nightmare. Any recommendations on next steps, diagnose, resource? So every time I see that, it’s either because the plan has a recompile or like the store procedure, the plan had a recompile hint on it or something.
And like see what’s ever logged some metrics about it, but didn’t keep the plan or the plan recompile for some other reason. And sometimes like if you, when you see that there should be a bunch of reasons listed in there, why there might not be a plan. So what I would do is just grab the query text or like the store procedure name from one of the other columns and see if you can get an estimated plan for it there.
You know, one of the kind of things that I always wish that I could have put into Blitzcache that I didn’t get a chance to was like just some like validation on if a query plan is there. Because, you know, well, it’s good to be able to say, hey, this is a crazy, you know, awful thing that is executing and doing stuff. If there’s no query plan for it, it kind of defeats the point of a Blitzcache.
So I always wanted to do something where like if like a certain amount of the values were null that came back or whatever, then like we would like, like it would change the value of top. So we would bring back some more plans to, you know, to analyze because if you bring, if like you say top people is 10 and five of the lines are we couldn’t find a plan for this query. And you’re looking at like maybe five query, maybe like five plans that, you know, you know, kind of like limited value.
Like they’re probably at the end too. It’s like kind of stinks. Yeah.
Yeah. See, there’s a lot of different reasons why plans might not be in the cache when we go look and they all kind of stink. Like what, so what I would say is if it’s a big 2200 lines for a procedure, like you’re saying most likely. So there’s a limit to the number of nodes that can exist in XML.
It’s like 128. And after 128, you have to run a special command to get the plan XML from another place and you can’t render it in any way. It’s useful.
It’s a lot of fun. So like you can’t like cast it to XML because it’s too big and it throws errors and you can’t do anything good with it. So there should have been a query in there that said, like gave you like a select star from like a query plan text DMV for the SQL handle that, or plan handle that, that didn’t bring back a plan in BlitzCache. And by the way, BlitzCache support now is 99 cents a minute.
So you owe me like three bucks. Damn. I underpriced myself.
I should have said 299 for the first minute. Could have tripled my money. Damn. Let’s see here. What is the best software source control for SQL Server? I mean, look, Redgate kind of runs away with everything right now.
You know, I don’t, I, I, I have issues with some of their products, but I think for stuff like that, Redgate runs away with it. Hands down. I wouldn’t, I wouldn’t do it.
I wouldn’t go with anything else right now. You know, I would, I would probably get it. I would probably use a different monitoring tool, but for source control and DevOps type stuff, I don’t think that I would trust anyone other than Redgate. At this point.
You know, and that’s, and like, and that’s, you know, just based on, you know, like surveying kind of who does stuff, how involved they are with the SQL Server community. You know, the number of people using them, the available training and kind of expertise on it. Like, this just like Redgate just, you know, just stole the ball from everyone else.
It was just kind of like standing there, holding it over their head. Like, so I just, you know, whatever, whatever you need to do, I would, I would go to them first. So far as I know, they are, if you run into something that, you know, if you have some scenario that one of their products just is not addressing, they are pretty, pretty, pretty responsive.
And, you know, getting that kind of stuff put together, especially if you have a lot of money. Or like, or if you have like a company name that like looks good for them to say, hey, we work with like awesome charity group, corp, or something. I don’t know.
Lots of fun stuff. All right. Do, do, do, do, do, do. I don’t need any of this stuff. All right.
Let’s get rid of some stuff on my phone that was blinking and making YouTube questions not show up properly. Next week, I promise it will be seamless because I won’t click the wrong button near the participants window to make everyone disappear. I apologize.
I like sort of accidentally raptured all of you and sent you to a phantom zone or something. But I’m able to join you from my phone. We have a link.
It’s coming to the light, I guess. All right. Do we have any other questions from the magnificent 10 of you who have shown up? Let’s see here.
Darren says, have you ever worked with in-memory OLTP much, exploring some solutions using it? No, and only because I never got a chance to. So it’s a really, it’s a really niche feature as far as what I think it’s a good fit for.
And all of the use cases that I’ve seen for it have been for incredibly high rate data ingestion applications where the data that you care about doesn’t hang around long. So think about like an online gambling type thing where you have a bunch of events and people want to bet on events and do stuff. But as soon as that event is over, like no one’s going to go back and care about it, right?
Like events over, done, payouts. So when you want to ingest all of that like really high value data that needs to happen immediately, in-memory OLTP can be great for that. And then as soon as an event is over, you kind of flush it out to on disk tables where, you know, people can still get to it, but it’s not going to be, you know, like blazing latch-free, lock-free stuff.
And the reason that it’s really good for that is because with the high rate of data ingestion stuff is that that’s where the lock-free thing is really cool because it’s all of those concurrent inserts and updates and stuff that really need to happen quickly. If your problem is like, well, we need this like data warehouse report to be faster, that’s not a good use case for in-memory OLTP. And if your problem is like we have 5,000 transactions a minute and they’re kind of slow, then you don’t need in-memory OLTP.
You need a much more basic level of like tuning and indexing query stuff because the in-memory OLTP stuff, it really shines, I would say, like the 20, 25, 30,000 transactions a second or a minute or some ungodly number where, you know, you just really need to bang stuff in quick and no one can wait. You need all that like, it was like grandma betting 50 cents on Greyhound. Let’s see here.
Who is your pick for the Super Bowl? What teams are in the Super Bowl? You’d have to tell me that first and then I’ll pick. I have no idea right now. I pay almost no attention to any sports.
Sorry. And I’m not anti-sport. I like watching sports in bars and I like watching sports.
I like watching sports highlights because I think anyone who can make millions of dollars doing that kind of stuff because they’re just that good at it is pretty fun to watch. But, yeah, I have two kids and a wife and the amount of sports watching that goes on in my house is limited to the first like week to month when the Mets don’t suck or when there’s like a lot of anticipation that the Mets might do well this year. And then the Mets tank and no one watches baseball anymore.
So that’s about where my cutoff is. Let’s see here. I’m starting to use more clustered columnstore indexes. Yes.
Anything we should be careful of or anything cool we might be missing. So I’m going to go against nearly everything that I’ve ever said about index maintenance when I talk about columnstore and that it is absolutely positively vital that you maintain your columnstore indexes. There’s all sorts of stuff with like gravestones and deltas and compression and dictionaries and like all sorts of things that if you don’t have your columnstore indexes maintained correctly, you can really boot performance on it.
Joe Obish. I keep telling him to blog about it, but he doesn’t. But maybe he finally will.
But at his talk at pass over last year, which might be out on video now, I’m not sure yet. But at his talk at pass last year, he went into a bit how if, you know, you load a bunch of data into your columnstore indexes, but it’s like loaded inefficiently or like data types are weird, then you can end up with like really, really bad query performance because you don’t get like good dictionary compression or like run length encoding and all the other stuff that goes into making query store. Really, really fast.
So like, like, you think about the number like what makes it what makes columnstore really powerful right now is batch mode. So you work on batches of rows at a time rather than like single row at a time like you do with rowstore indexes. And when you have like, misloaded, let’s call them misloaded columnstore indexes, you end up working on far fewer batches because far fewer of them can fit in like an instruction at a time.
But Joe Obish is the man to watch for that. I think, you know, Nico, I’m pretty sure he has some posts on it. If you want to dig through his, his, his like 150 post archive on columnstore, but that’s, that’s the first thing that I would think of.
Um, so aside from maintenance, uh, you know, being very, very mindful of data types and, um, you know, when you, when you see, when you, or when you’re working with columnstore, there are like certain op like plan operators that you just want to avoid. Like constantly like nested loops, merge joins, uh, sorts, um, uh, anything like when operators execute in row mode rather than batch mode for some, for whatever reason, it’s a lot of stuff that can go wonky with those queries. So what, but what I love columnstore and I love what they’ve been doing with it.
There’s still a lot of, you know, manual labor type stuff that you, you have to do when you’re, when your queries are on to make sure that you’re getting the best performance of it. Um, everything is better in bars. Yes.
Everything absolutely is better in bars. Except sleep. Sleeping in bars is not, not better. It’ll get you thrown out pretty quickly. All right.
Any other questions? Anyone else? Fire something fun at me. Let’s see. I don’t know. I, I, I was wondering if I was, uh, no, nothing on Twitter. Okay.
So sometimes I always think that someone might ask a question on Twitter if they can’t show up here on the YouTube channel. Uh, let’s see. Some deranged creep wants to know my age, sex and location. And I’m just going to call, I’m just going to call in the Chris Hansen patrol on you.
None of that. Uh, am I excited about bits? Yes, I do have the costume and I’m, I’m, I’m disappointed that you didn’t notice that the picture that I put on Twitter about the costume because it is fully loaded. It is here.
The only thing that I couldn’t get is, so what’s funny is when I was, when I was talking to Andy Mallon about, about like the, the costume that I was buying, he, he was all excited. He was just like, he, he thought he like, he had like a, like a, like a dead on thing in mind. I was like, look, I can do a lot of it.
And he was like, well, did, did you get a racer back tank top? And I was like, I don’t know what that is. I bought like regular tank tops, which I’m still going to look fat in, but I can’t like imagine it like, like a racer back tank top. And then like, I got all, I got all nervous and I was like, uh, Hey, uh, I’m going to go look on Amazon for a racer back tank top.
And I don’t think that a clothing company has made a racer back tank top for men since Freddie Mercury wore one. Um, and even at that juncture, he might have just worn one that was made for a woman because he was a, he was a pretty slender fella, but not me. And like, I, I tried to look at, uh, like, you know, women’s sizes that, that might, might fit a man of my stature.
And, um, then I guess got depressed. I didn’t want to get into that. Uh, bringing up, hoping I’d bring it up for a preview.
Uh, I’d have to go get it. I don’t have it in my office. It’s the one thing that I managed to talk my wife into not making me keep in the office because everything else that might vaguely belong to me is jammed into my office. It is crazy.
Do you have a pick of him? I can, oh, geez, Louise. Let’s see here. How can I do this? Uh, all right. Let’s see. Uh, where is, how do I get to a browser now? This is very challenging.
You guys are pushing the limits of my, my technical ability here. Freddie Mercury. Live aid.
Come on, baby. Come on. Don’t fail me now. There we go. Images. No, not videos. Images. Come on, phone.
Come on. There we go. All right. So this is a very close approximation of what I will look like at SQL bits. Uh, I can’t do justice to his armpit hair. And, um, I’m, I’m not going to be able to lose 120 pounds, but I have that outfit pretty well nailed.
Except for the racer back tank top. That’s just going to be a regular tank top. I don’t know if I can tuck mine in.
That might, that might get dangerous. I don’t know how that’s going to go. That might not be a great idea. Excuse me. Jeez Louise. It is dry in here. All right.
Let’s see. Get back into the old YouTube. Come on, baby. There we go. Yeah. Ah, practice the pose. Live stream, picture and picture.
Thank you. That is the one thing that I have managed to get right in my time on YouTube is live stream, picture and picture. Uh, when I tried to schedule these, starting this up was the most painful thing I’ve ever done. I had to pay 10 bucks for an encoder or a decoder called like Wirecast.
And every time I went to start it up, it would tell me that my camera didn’t work. And there would be like, like blue screen, like not like computer blue screens, but it would just show me like a blue screen preview. And it was terrible.
So like, but like when I just hit like the go live button, it’s dead simple. When I try to schedule these, it’s miserable. I’m going to have to do something really. Uh, let’s see.
Any other, any other fun questions? You creeps staring at my poor office. Let’s see.
Zach asks. No, no. That was the same person. Practice the pose. No. I mean, it’s just the arm up, right? This isn’t a good camera for that, for me to practice. It’ll be fun.
It’ll be fine. Let’s see. We have, we do have, we have a question or maybe we have a statement. I don’t know. We’ll figure it out in a minute. Sam says, uh, by tuning indexes on a secondary moving reporting to read only secondaries are really popular movement in my workplace.
I’m concerned about how to manage the disparate index needs. Yeah. Uh, I, I wrote a post about this recently that is scheduled.
I think for like two weeks from now. Blogging my butt off. Uh, but it’s, you know, it, it’s, it’s tough to like, depending on how you’re replicating the data, you know, you, you, you usually can’t have a different set of indexes on a secondary. From the, what you have on the primary.
And what makes things even more challenging. And I think this might be the third week in a row that I’ve said this is that, uh, the index DMVs on like readable secondaries don’t migrate their data back to the primary. So you have a really hard time figuring out like what indexes are good for anything.
It’s like looking around like, uh, okay, this one looks good here. This one looks good there. I don’t, you know, it all just goes to heck at some point. Uh, and it would be, it would be nice if there was like something that coagulated all that DMV data, but there is nothing at this point.
You would have, you would have, you are stuck doing that on your own, writing your own scripts to push data around. Yeah. But yeah.
Uh, so like, unless you use some form of like capital R replication, right? By that, I mean like not AGs or log shipping or mirroring where you can apply a script afterwards to make different indexes on a, on a, on a secondary available than what are just on the primary. Uh, yeah.
Kind of out of luck on that. And that’s, and that’s too bad because I know that with availability groups, at least on readable replicas, SQL Server is able to create like temporary statistics. So it would be nice if you could create temporary indexes too.
That would be fun. Aggregate, not quite. No, I like coagulate better. I think coagulate sounds better as a word. Aggregate.
Aggregate just sounds aggressive and angry. Not fun. Coagulate. It’s like, we’re going to go, we’re going to go have fun. We’re doing it together. Co-agulate. A bloody mess.
Why? Lots of things coagulate. Pancake batter. Uh, fat. I don’t know.
What else? What else coagulates? I’m trying to think of something that coagulates in a pleasant way now and I’m starting to see your point. Maybe coagulate isn’t good either. Maybe there’s no way, there’s no good way, no good way to say you bring things together. There’s no good single word for that.
They’re all just ugly. All right. Uh, anything else? Any other fun questions? Observations?
Hmm. Hmm. Hmm. All right, folks. Uh, thank you for joining me. Uh, I appreciate all of you showing up and asking stuff. I will be back next week at the same time doing the same thing.
And hopefully you’ll be able to make it then. I’ll see you next time. Thank you. And, uh, next time I will have the Freddie Mercury costume ready to show you. I think we’re getting, we’re getting close enough to bits now where I can, I can, I can do the reveal.
So I will see you next week. Not dressed up, but I’ll, I’ll have it. I’ll have it. I’ll tease you a little. Maybe I’ll wear some little shorts or something.
Bye.
Going Further
If this is the kind of SQL Server stuff you love learning about, you’ll love my training. Blog readers get 25% off the Everything Bundle — over 100 hours of performance tuning content. Need hands-on help? I offer consulting engagements from targeted investigations to ongoing retainers. Want a quick sanity check before committing to a full engagement? Schedule a call — no commitment required.