Co je to „bussing tables“ ' zlý?


Nejlepší odpověď

Bussingové stoly jsou prací v restauraci. Znamená to vyčistit stůl mezi zákazníky. To zahrnuje odstranění všech špinavých nebo použitých předmětů (nádobí, stříbro, ubrousky) a následné setření ze stolu.

Tradiční název práce pro toto je „busboy“, ale ne každý, kdo tuto práci dělá, je chlapec . Nyní může existovat genderově neutrálnější výraz.

Odpovědět

Ve scénáři, který popisujete, uvádíte, že nejčastěji používaná pole v tabulce jsou primárním klíčem (CompanyId) ), jedno datové pole (CompanyName) a cizí klíč (IndustryId). Pokud jsou v těchto polích indexy, které jsou zaručené pro primární klíč a jsou extrémně pravděpodobné pro cizí klíč, protože jinak by výkon databáze sál, pak budou dotazy, které odkazují pouze na tato pole, v mnoha případech uspokojeny zcela z indexů . Samotné stránky databáze nebudou přečteny. Můžete to zkontrolovat sami tak, že si z analyzátoru dotazů vyžádáte plán provedení dotazu. Pokud plán provádění používá „index hledat“ nebo „indexovat zařazování“, pak k sestavení výsledků dotazu používá index. Pokud je index primárního klíče seskupen, situace je poněkud odlišná, ale já to nechám na můžete prozkoumat, co je seskupený index na serveru SQL Server a jak se mění způsob ukládání a přístupu k databázi. Obecně platí, že pokud SQL Server dokáže sestavit sadu výsledků pomocí dat z indexu, provede to namísto použití stránek databázové tabulky, protože to znamená čtení méně dat. Index je strukturován stejně jako tabulka, kromě toho, že má pouze sloupce určené v indexu, plus pole vyhledávače řádků, které je ukazatelem na místo, kde je řádek uložen; tento ukazatel (24 bajtů) je obvykle menší než samotná data řádků, a tak se na stránku databáze vejde téměř vždy více řádků indexové tabulky než řádků tabulky.

Velikost stránky databáze v serveru SQL Server je pevně nastavena na 8192 bajtů. 96 bajtů stránky se používá pro záhlaví; tato plus další režie ponechává maximální velikost řádku 8060 bajtů. SQL Server 2008 však umožní, aby sloupce varchar, nvarchar, varbinary a sql\_variant tento limit překročily, a přesune tato pole na přetečení stránek, pokud by jejich zahrnutí do řádku způsobilo, že řádek překročí tento limit velikosti řádku. Také sloupce text, ntext, image, nvarchar (max), varchar (max), varbinary (max) a xml jsou vždy uloženy na samostatných stránkách bez ohledu na to, kolik dat je ve sloupci skutečně uloženo. Definice tabulky, kterou jste zveřejnili, ukazuje celkové šířky sloupců, které daleko přesahují limit 8060 bajtů, ale většina z nich je v polích varchar (n), takže skončíte stránkami přetečení řádků, kde skutečná velikost proměnné šířka sloupců je dostatečně velká. Počet stránek, které bude řádek v této tabulce používat, se proto bude lišit v závislosti na tom, jak dlouho jsou data skutečně uložená ve sloupcích s proměnnou šířkou pro každý řádek.

Pokud jde o zlepšení výkonu, pokud máte jen několik polí, která se běžně používají, pravděpodobně získáte stejná vylepšení pouze tím, že zajistíte, že pole a kombinace polí, která běžně používáte, budou k dispozici jako indexy. To bude znamenat, že většinu sad řádků lze naplnit z dat indexu namísto dat tabulky, což zabrání problémům s načítáním velkých řádků z databáze. Nejlepší ze všeho je, že to lze provést zcela na úrovni DBA; aplikace nemusí být přepsána, aby odrážela změnu schématu způsobenou přidáním (nebo odebráním) indexů. A samozřejmě by měl být indexován jakýkoli sloupec, který budete používat jako součást spojení; jinak to budete dělat tabulka vyhledává spojení, která jsou opravdu docela pomalá.

Navrhuji, abyste u některých z těchto větších polí zvážili ntext místo velkých nvarchar polí, i když to může vyžadovat změny kódu aplikace, protože sémantika textu / ntext se liší od varchar / nvarchar. Textové / ntextové sloupce jsou vždy uloženy na LOB stránkách, namísto podmíněně uloženy na datové stránce řádků, a pokud jsou tyto sloupce často přítomné a střední velikosti (řekněme , 1000-2000 bajtů), jejich uložení jako text / ntext udrží zbytek datových stránek řádků menší a může umožnit více řádků na stránku, což zrychlí skenování tabulek, které ve skutečnosti nemusí odkazovat na tyto sloupce.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *