nanannaa nnaanaa nan na na na...
be the #sqlserver query workspace memory grant...
be the memory grant...
be the memory...
memory grants for bulk inserts into CCIs are tricky, especially if the query has significant and highly variable memory-consuming operators (hashes, sorts, etc) that are not involved in the compression.
"regular" memory-consuming operators - sorts, hashes and the like - can spill to temp if they need more memory than allowed by the grant.
rowgroup compression for a bulk insert can't spill to tempdb.
that's why memory conditions can cause DOP of a parallel CCI bulk insert to be downgraded.
that's why memory conditions - including a memory grant timeout - can cause a CCI bulk insert to be downgraded to a trickle insert into delta stores.
that's why scaling parallel bulk CCI inserts for concurrency can be really, really doggone hard.
there's at least two ways that CCI parallel bulk insert works differently than other plan operators wrt workspace memory that make planning for them quite tricky.
take note: scaling #sqlserver DOP 1 CCI bulk inserts is much, much easier than parallel CCI bulk inserts. Far easier to predict and plan. Far easier to investigate when something unexpected happens. Far easier to intervene.
But @gearheadDBA is a plan-ahead kinda guy, and i think he was so forward-thinking he may have already concocted a way to accomodate the current roadblock...
• • •
Missing some Tweet in this thread? You can try to
force a refresh
just like that, i'm probably done thinking about scalabilty strategies for #sqlserver, and back to investigating latch timeouts on very busy systems.
here's the thing. the number of mdmp files for a given large-memory system can be pretty small, especially if an Availability Group is involved.
while a dump is in progress, #sqlserver memory must remain in a constant consistant state. the more memory, the longer the dump may take (there are other un-enumerated factors).
but, Availability Group lease timeout can only be set as high as 100 seconds currently.
484 #sqlserver batch mode on rowstore queries. DOP 8. run consecutively by a single session. each query is a fullscan of a different single table, grouping by a CASE statement on a non-indexed INT/BIGINT/NUMERIC data type column. producing one or two result rows of 1 column each.
based on observation of the first experiment with these queries, in which the queries were ordered alphabetically by the name of the only table in the FROM, i reordered the queries based on decreasing pages:rows ratio. that gives the evident decreasing pages/sec trend :-)
a closeup of the first 10 minutes shows the considerable variation even though the downward trend is evident.
wow
~~
Oracle in Talks to Buy Cerner
An agreement, which could potentially be worth $30 billion, would rank as biggest ever for software giant
2021 December 16 wsj.com/articles/oracl…
i don't know i've ever heard a story about Oracle in talks to buy a company with an ending other than Oracle *buying* that company.
oh. i forgot about the TikTok debacle, mentioned by Financial TImes here.
so that's *one* story about Oracle not buying.
~~
Oracle nears deal to buy health IT company Cerner for $30bn
2021 December 16 ft.com/content/9bf806…
i'll nitpick two details, though :-)
the 512k upper bound for disk IO size isn't properly a #sqlserver limit, although it *is* the limit on most systems. it's the upper bound of the disk adapter.
some disk adapters - most fibre channel HBAs and some others, too - allow configuration of the maximum disk transfer size, and can be set higher than 512kb.
indubitably
~~
"To conduct tactical monitoring, we must also consider the complexities of virtualization, consolidation and concurrency alongside the activities of multiple CPU cores."
"... for capacity planning, this assumption is mostly harmless.
However, this assumption is reckless for tactical monitoring..."