« first day (1967 days earlier)      last day (3199 days later) » 

11:18
@AaronBertrand Enjoyed Poland, then?
12:08
@Phil yes I was pleasantly surprised
@AaronBertrand Beautiful country
13:08
@TomV It looks like SQL Server on Linux is using some win32 emulation. You can still see all the win32 calls in the stack dump: pastebin.com/wPbke7WB
 
2 hours later…
14:49
@JamesLupolt So you managed to crash it with a clustered columnstore index, nice
every time?
@ConcernedOfTunbridgeWells - just to follow up - the Dell R720XD is installed and running a bunch of VMs and wow, is that thing fast, with an OCZ PCIe SSD for the OS. I spent all of Saturday running comparative tests on various RAID configurations. RAID 50 vs 10, different stripe sizes etc... I used DiskSpd (the replacement for SQLIO) to run 9 different tests against each RAID configuration. RAID 10 wins (of course), but to my surprise not by more than about 25% overall.
In a bit of a surprise, RAID 0 across all the drives was only a couple of percentage points faster. 64K stripe size is about 5 to 10% faster than 256K for random I/Os.
anyway, it was a bank-holiday weekend, and I spent the entire time in my basement. I must love tech.
@MaxVernon Did your bounty question on SF ever get an answer?
Yes I am too lazy to look.
@PaulWhite there is one that provides a half decent answer. I'll likely award him the bounty since he at least tried.
at the end of the day, it boils down to "ask the vendor"
like so many questions.
4
A: How is raid implemented at the *disk* level?

MassimoYou will find all relevant details here. Basically, all your assumptions are correct: RAID 50 is a striping (RAID 0) of RAID 5 arrays, while RAID 10 is a striping of RAID 1 arrays. How this is physically implemented, however, depends strongly on the disk controller; sometimes, additional space ...

I un-lazified myself.
@MaxVernon Context?
@PaulWhite lol, I was just going there. Thanks for the link
14:58
Lazy as a verb is a little better than ask as a noun, but... :-)
@PaulWhite just a funny graph
I exist to serve.
@AaronBertrand hi! The one non-noun that gets me really mad is "agile". As in "How do we Agile?"
@AaronBertrand Made it worse, I think.
that's not a noun!
anyway, that's a bad example I just came up with.
15:01
@MaxVernon Do you agile performantly?
@PaulWhite that's what happened after I did the bounty thing on Server Fault
@Phil there you go!
@MaxVernon Oh! It's your rep! Ha.
@PaulWhite not that I'm a rep-whore or anything ;-)
Nooooooooooo....
I especially liked this comment:
Right. This is boring. Without specifics, it's hard for anyone to give a relevant answer... and again, if performance is what you're seeking, you can't exclude the impact of caching nor ignore the fact that SSDs are the go-to solution for many I/O profiles now. — ewwhite May 20 at 22:36
SSDs for all the things!
I was really hoping I'd see an answer from an engineer who's implemented RAID in hardware, or at least worked around it.
I still don't get how a 256K stripe works across 5 drives.
how do you do the math on that?
in terms of physical 512-byte sectors.
@ConcernedOfTunbridgeWells - it was an aha moment when I saw your details about the maximum random read speed being directly related to the ability to read a single sector from a track per rotation. You can actually see that speed limitation no matter what RAID level is being used. Even though my 12-disk 15k SAS RAID 10 array can read sequentially about a million miles an hour, it'll only get something around 40MB per second on 64KB random reads.
funny though, that 40MB is in the "you can only get x per second" category. I remember when 40MB was more data than my entire life had come up with at one point.
15:15
When I was in that period of my life, I think I just didn't know (or care) what a megabyte was.
Please turn the disk over
4
15:31
That was probably an excellent joke (as all Bill's jokes are). I wish I could understand it.
Either some unfamiliar reference or I'm being dumb.
Or not old enough.
2
@AndriyM That, yes.
A floppy disk is a disk storage medium composed of a disk of thin and flexible magnetic storage medium, readable by a floppy disk drive (FDD), and sealed in a rectangular plastic carrier lined with fabric which serves the purpose of keeping the data storage disk free of foreign particles such as dust. The floppy disk was a revolution in the computer industry when it was developed by IBM in the late 1960s as a reliable and inexpensive method of loading microcode into their System/370 computer. Floppy disks remained a popular portable digital-storage medium for nearly 40 years after being introduced...
@AndriyM See the link by Paul
> Since all 3-inch media were double-sided in nature, single-sided drive owners were able to flip the disk over to use the other side. The sides were termed "A" and "B" and were completely independent, but single-sided drive units could only access the upper side at one time.
Thanks for the references. Turns out that was in my time, I just don't remember the "Please turn the disk over" as much as "Please insert the next disk".
In my student years, we used to turn single-sided 360K 5.25" floppies into 720K (double-sided) ones.
15:48
You begin to forget things as you get older.
The less prominent they were, the sooner you forget them.
16:05
@MaxVernon For random access I/O the benefits of a smaller stripe size are that each sector read carries less cache baggage (64k to potentially read just a single 8k block as opposed to - say - 256k). For streaming I/O the benefits of a larger stripe size are that each rotation of the disk reads a bigger chunk in.
16:18
@AndriyM I'm old enough to remember both - custom level disks for Loderunner on an Apple II, flipping the disks over and punching a write notch in the other side. Plus, experiencing the joy of installing Corel Draw 5 off 43 floppies.
I'm even old enough to remember fiddling the azimuth on a cassette tape deck to get stuff to load on a BBC model B.
Uphill both ways etc. Now get off my lawn.
@ypercubeᵀᴹ lol, I remember using a friggin' hole-punch to convert 5.25" disks to double-sided, double-density disks. How old am I. A hole-punch, that's hacking!
@AndriyM oh, now I see you just said that!
@MaxVernon Happy times.
We were happier then, even though we were poor
@AndriyM because we were poor
@ConcernedOfTunbridgeWells yah, cache is limited :-(
thanks for all your help, btw!
trying hard to do something with a PIVOT
@bluefeet ???? are you around?
16:26
@swasheck pivoting hard, that's how you roll
@bluefeet what am i doing rong here?
oh crap
hang on
lol, an "a-ha" moment!
my pivot skills are magic, I just have to look at it and it fixes itself
no
rong code
same error
nevermind. screw pivot.
it's dumb
like merge
hush
don't badmouth PIVOT
4
16:30
i mean, this is the actual code
select
	base.DatabaseName,
	base.ObjectName,
	base.IndexName,
	base.PartitionNumber,
	[REBUILD],[REORGANZE]
from (
				select
					DatabaseName,
					ObjectName,
					IndexName,
					PartitionNumber,
					MaintenanceType = opType,
					MaintenanceDurationMS = cast(datediff(millisecond,DateTimeStart,DateTimeEnd) as decimal(20,4))
				from Stage.[IndexDefragLog]
	) base
pivot (
		avg(MaintenanceDurationMS)
		for MaintenanceType in ([REBUILD],[REORGANZE])
	  ) pvt
and i'm not sure why i'm getting binding errors
After PIVOT, you can only reference the pvt alias. All the non-pivoted base columns become pvt columns, just like the pivoted ones.
4
@AndriyM Yeah that annoyed me for a while as well today, have to think of them as a grouping to get my head around it :(
well screw that
newfangled sql features
@swasheck you missed a w. Twice ;)
@ypercubeᵀᴹ right. rong is wrong
16:34
rong is wright
3
trump is rong
#MakePivotGreatAgain
@Shaneis don't ruin pivot by putting it in that slogan
@bluefeet pivot is its own ruin
#MakeStackOverflowGreatAgain would be a better variety of that
16:37
@swasheck pffffft
@MaxVernon stackoverflow is its own ruin
@bluefeet Apologies #Make(MAX(CASE WHEN Column = VALUE THEN VALUE END)GreatAgain
17:33
@AndriyM thanks. have an upvote, by the way.
@TomV No, not consistently. I don't remember the context for the crash. It's possible I stopped the server with the index build running.
Interestingly I get about the same performance for index builds and singleton inserts on the same hardware in Linux and Windows.
@JamesLupolt the wisecracks that linux folk were making were that microsoft wanted to gain the immediate performance improvement in TPC test of using linux as OS
@TomV I'm a little disappointed. I was hoping I'd get a segmentation fault instead of an access violation.
@swasheck Ugh
 
1 hour later…
18:53
FFFFFFFFFHHHHHHHHHHHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
LLLLLLLLLLLLLLAAAAAAAAAAAAAAAALLLLLLLLLLLLLAAAAAAAAAALLLLLLLLLLAAAAAAAAAAAAA
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
WWWWWWWWWWWWWWWWWWTTTTTTTTTTTTTTTTTTTTTTTTTTTTFFFFFFFFFFFFFFFFF
i'm so angrily confused right now
19:10
How about right now?
Try pivoting your anger.
5
I CANT PIVOT!!!!!!!!!!!!!
FSK THAT
@bluefeet Makes me laugh every time. Really does!
So, today's topic is pivot?
@JamesLupolt On another note, any news on the Itineris project?
19:19
@TomV always
@JamesLupolt feel free to sanity-check any of their proposals in here
hmm, me and sanity checks, doesn't seem a good idea now that I think about it
@swasheck I thought trump was far-right
eff it. i just went full join. pivot can kiss my ass
@PaulWhite Unless it's pivotal to stay angry.
2
@swasheck sad
@swasheck Like "full monty"?
19:35
given this data
i'm trying to get something along the following:
databasename, objectname, indexname, partitionnumber, rebuildops,reorgops,dayssincelastrebuid,dayssincelastreorg,avgreorgduration,avgr‌​ebuildduration
i'm about to give up
@swasheck well for one, you're using sqlfiddle, which is probably enough to make you want to quit already
yawn
@swasheck No, you are about to get help.
@swasheck PIVOT could be used there, but you are actually pivoting more than one group of values, so conditional aggregation would probably be easier to use
19:50
thanks, @AndriyM
like
max( case when maintenancetype = 'REBUILD' then TotalMaintOps end ),?
@swasheck Yes.
SELECT
  databasename,
  objectname,
  indexname,
  partitionnumber,
  rebuildops           = MAX(CASE maintenancetype WHEN 'rebuild' THEN dayssincelastmaintop END),
  reorgops             = MAX(CASE maintenancetype WHEN 'reorg'   THEN dayssincelastmaintop END),
  dayssincelastrebuild = MAX(CASE maintenancetype WHEN 'rebuild' THEN totalmaintops        END),
  dayssincelastreorg   = MAX(CASE maintenancetype WHEN 'reorg'   THEN totalmaintops        END),
  avgrebuildduration   = MAX(CASE maintenancetype WHEN 'rebuild' THEN avgmaintduration     END),
rad. thanks. good advice. you rock! not sure why that simple answer didnt smack me in the face
That assumes a single row per database, object, index, partition and maintenance type
yes. it is.
20:09
Digging into one of @PaulWhite blog posts and saw this line UPDATE dbo.Example WITH (TABLOCKX)
I was curious what this WITH (TABLOCKX) was for, I've never seen this in any query before
@Phrancis Looks like a table hint suggesting that SQL Server use the exclusive table lock on dbo.Example for the duration of the UPDATE statement (or until the end of the transaction – not sure, Table Hints should clear that up.)
@AndriyM I was only familiar with WITH (NOLOCK) up until now, thanks I'll be reading that
@TomV I think it's about to go through testing. Thanks for the offer. I'll probably come to you with some questions once problems begin. : )
The consultant has an unusual background. Degree from MIT.
Hmm, I thought table locks were something to be avoided when possible
Of course I suppose it depends on the table and its use, and what is calling it, but exclusive locks on a whole table just sound like a performance nightmare
20:25
is search broken?
I tried to find the name of the consultant @JamesLupolt mentioned a while back but whatever I look for it returns 0 results
we are all consultants here
@Lamak Yes, but not everyone of us may have been mentioned by @JamesLupolt.
The room search does seem to be broken, though.
right, I haven't received the honor
let me check with a dev @TomV
20:33
Hmm, it does appear it's having problems
@Lamak Be grateful, it was a Dynamics consultant
I just repeated a search I did earlier today (which returned results earlier) and 0 results
I am grateful now
Seems to be broken on CR chat room as well
@TomV I can't remember now. Sorry.
20:35
Not an attack on The Heap, then. Not much drama, then.
@TomV search is definitely having issues:
@bluefeet Should I post on meta?
@TomV If you want, but I've poked a dev
the devs are on it
OK, I'll quit typing a meta Q then :)
@TomV Be grateful, you were gonna post a question in meta
20:41
By the time I finish it, it'll be closed as "status-norepro"
does anyone have 5 minutes to check this post I wrote? sqlserver.science/performance/…
thanks, in advance, if you do!
@MaxVernon ok, read it
@Lamak thanks. Shit?
:-)
never heard of FORMATMESSAGE before this
@Lamak me either - I was looking for ways to format a string and stumbled across it. I thought it might offer good mileage, but apparently not.
20:46
@MaxVernon it's good I think. Do you need to use CONVERT with FORMATMESSAGE?, does it change if you use RIGHT for instance?
@Lamak good question. Honestly it was a while back that I wrote that post - I only just now "published" it. I'd need to re-look at the details to properly answer that question!
could be worth to give it a re-look
@MaxVernon FORMATMESSAGE(MSDN page here) … – looks like you forgot to put the link there.
thanks, @AndriyM - I just fixed it!
thanks for looking though!
@Lamak from a cursory look, it seems like the convert is not necessary.
uh, can't help you test it now though
20:58
so, the CONVERT(VARCHAR(10),...) forces the type of the computed column to be a VARCHAR(10)... leaving that out makes the system assume it is a VARCHAR(4000)
clearly, having the CONVERT in there at least looks better.
varchar(4000)? Not varchar(8000) or nvarchar(4000)?
sorry NVARCHAR(4000) !
@MaxVernon and right?
test bed:
CREATE TABLE #MyTestFormatMessage
(
	ID INT NOT NULL
		PRIMARY KEY CLUSTERED
		IDENTITY(1,1)
	, IDPadded AS (FORMATMESSAGE('%010i',ID))
	, SomeData VARCHAR(1000)
);
CREATE TABLE #MyTestFormatMessage1
(
	ID INT NOT NULL
		PRIMARY KEY CLUSTERED
		IDENTITY(1,1)
	, IDPadded AS (FORMATMESSAGE('%010i',ID))
	, SomeData VARCHAR(1000)
);
GO
INSERT INTO #MyTestFormatMessage1 (SomeData) VALUES ('test1');
INSERT INTO #MyTestFormatMessage (SomeData) VALUES ('test2');
GO

DECLARE @cmd VARCHAR(100) = 'SELECT * FROM #MyTestFormatMessage1'
@Lamak from what I recall RIGHT is vastly slower
@MaxVernon I have a feeling that it is
21:29
chat search should be fixed @TomV @Phrancis @Lamak
1
A: Chat search is returning no results

AdamI don't know where the analyzer config went for that specific index, but it was missing. We're rebuilding the chat-stackexchange index, which will take some time to complete (probably under an hour or so?). Once that's done, searches should be fine again.

@bluefeet superb, thank you for jumping on that so quickly
@bluefeet it still doesn't return results for my search ;-)
@Lamak did you read the answer? :P
@bluefeet yes...but did you read my previous comment?
55 mins ago, by Lamak
user image
nice
21:32
@Lamak lol... I didn't see that the first time round
@MaxVernon yeah, it was hard to notice
@bluefeet yes, seems to work now

« first day (1967 days earlier)      last day (3199 days later) »