SQL සේවාදායකයේ, පොකුරු සහ නොකැඩූ දර්ශක දෙකම පේළි-නැඹුරු ආචයනය B ගස් ලෙස සංවිධානය කර ඇත.
( රූප මූලාශ්රය )
ක්ලස්ටර් දර්ශක හා ක්ලස්ටර් නොවන දර්ශක අතර ප්රධාන වෙනස වන්නේ ක්ලස්ටර් දර්ශකයේ කොළ මට්ටමේ බව ය ය මේසය. මෙයට ඇඟවුම් දෙකක් තිබේ.
- පොකුරු දර්ශක පත්ර පිටුවල ඇති පේළි සෑම විටම වගුවේ ඇති එක් එක් (විරල නොවන) තීරු සඳහා යමක් අඩංගු වේ (වටිනාකම හෝ සත්ය අගයට දර්ශකය).
- පොකුරු දර්ශකය යනු වගුවක මූලික පිටපතයි.
INCLUDE
සියලුම යතුරු නොවන තීරු පැහැදිලිව ඇතුළත් කිරීම සඳහා (SQL Server 2005 සිට) වගන්තිය භාවිතා කිරීමෙන් පොකුරු නොවන දර්ශකවලට ලකුණු 1 කළ හැකි නමුත් ඒවා ද්විතීයික නිරූපණයන් වන අතර සෑම විටම දත්තවල තවත් පිටපතක් ඇත (වගුව ම).
CREATE TABLE T
(
A INT,
B INT,
C INT,
D INT
)
CREATE UNIQUE CLUSTERED INDEX ci ON T(A, B)
CREATE UNIQUE NONCLUSTERED INDEX nci ON T(A, B) INCLUDE (C, D)
ඉහත දර්ශක දෙක බොහෝ දුරට සමාන වේ. යතුරු තීරු සඳහා අගයන් අඩංගු ඉහළ මට්ටමේ දර්ශක පිටු සමඟA, B
සහ පත්ර මට්ටමේ පිටු අඩංගු වේA, B, C, D
වගුවකට එක් පොකුරු දර්ශකයක් පමණක් තිබිය හැකිය, මන්ද දත්ත පේළි එක් අනුපිළිවෙලකට වර්ග කළ හැකි බැවිනි.
අන්තර්ජාලයෙන් SQL සේවාදායක පොත් වලින් ඉහත උපුටා දැක්වීම බොහෝ ව්යාකූලත්වයට හේතු වේ
මගේ මතය අනුව, එය වඩා හොඳ වචන මාලාවක් වනු ඇත.
මෙම ක්ලස්ටර් දර්ශකයේ කොළ මට්ටමේ පේළි නිසා වගුවට එකම ක්ලස්ටර් දර්ශකය ඇති විය හැකි ය මේසය පේළි.
පොතේ මාර්ගගත උපුටා දැක්වීම වැරදියි නමුත් පොකුරු නොවන සහ පොකුරු නොවන දර්ශක දෙකෙහි “වර්ග කිරීම” තාර්කික මිස භෞතික නොවන බව ඔබට පැහැදිලි විය යුතුය. සම්බන්ධිත ලැයිස්තුව අනුගමනය කිරීමෙන් ඔබ පත්ර මට්ටමින් පිටු කියවා පිටුවේ පේළි ස්ලට් අරා අනුපිළිවෙලින් කියවන්නේ නම්, ඔබ දර්ශක පේළි පිළිවෙලට පිළිවෙලට කියවනු ඇත, නමුත් භෞතිකව පිටු වර්ග කළ නොහැක. පොකුරු දර්ශකයක් සමඟ පේළි සෑම විටම දර්ශක යතුරට සමානව තැටියේ භෞතිකව ගබඩා වේ යන පොදු මතයයි .
මෙය විකාර ක්රියාත්මක කිරීමකි. උදාහරණයක් ලෙස, 4GB වගුවක් මැද පේළියක් ඇතුල් කළහොත් SQL සේවාදායකය එසේ නොවේ , අළුතින් ඇතුළත් කළ පේළියට ඉඩක් ලබා දීම සඳහා ගොනුවේ 2GB දත්ත පිටපත් කිරීමට .
ඒ වෙනුවට, පිටු බෙදීමක් සිදු වේ. පොකුරු සහ පොකුරු නොවන දර්ශක දෙකෙහි පත්ර මට්ටමේ ඇති සෑම පිටුවකම ලිපිනය ඇත (File: Page
තාර්කික යතුරු අනුපිළිවෙලින් ඊළඟ සහ පෙර පිටුවේ ) ඇත. මෙම පිටු එකිනෙකට පරස්පර හෝ යතුරු අනුපිළිවෙලට අවශ්ය නොවේ.
උදා: සම්බන්ධිත පිටු දාමය විය හැකිය 1:2000 <-> 1:157 <-> 1:7053
පිටු බෙදීමක් සිදු වූ විට, ගොනු සමූහයේ ඕනෑම තැනක සිට නව පිටුවක් වෙන් කරනු ලැබේ (එක්කෝ මිශ්ර ප්රමාණයකින්, කුඩා වගු සඳහා හෝ එම වස්තුවට අයත් හිස් නොවන නිල ඇඳුමකට හෝ අලුතින් වෙන් කරන ලද ඒකාකාර ප්රමාණයට). ගොනු සමූහයට එකකට වඩා තිබේ නම් මෙය එකම ගොනුවක නොතිබිය හැකිය.
පරමාදර්ශී භෞතික අනුවාදයට වඩා තාර්කික අනුපිළිවෙල හා පරස්පරතාව වෙනස් වන තරම තාර්කික ඛණ්ඩනය වීමේ උපාධියයි.
තනි ගොනුවක් සමඟ අලුතින් සාදන ලද දත්ත ගබඩාවක, මම පහත සඳහන් දෑ ධාවනය කළෙමි.
CREATE TABLE T
(
X TINYINT NOT NULL,
Y CHAR(3000) NULL
);
CREATE CLUSTERED INDEX ix
ON T(X);
GO
--Insert 100 rows with values 1 - 100 in random order
DECLARE @C1 AS CURSOR,
@X AS INT
SET @C1 = CURSOR FAST_FORWARD
FOR SELECT number
FROM master..spt_values
WHERE type = 'P'
AND number BETWEEN 1 AND 100
ORDER BY CRYPT_GEN_RANDOM(4)
OPEN @C1;
FETCH NEXT FROM @C1 INTO @X;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO T (X)
VALUES (@X);
FETCH NEXT FROM @C1 INTO @X;
END
ඉන්පසු පිටු පිරිසැලසුම පරීක්ෂා කරන්න
SELECT page_id,
X,
geometry::Point(page_id, X, 0).STBuffer(1)
FROM T
CROSS APPLY sys.fn_PhysLocCracker( %% physloc %% )
ORDER BY page_id
ප්රති results ල සෑම තැනම විය. යතුරු අනුපිළිවෙලෙහි පළමු පේළිය (අගය 1 සමඟ - පහත ඊතලයක් සමඟ උද්දීපනය කර ඇත) අවසාන භෞතික පිටුවේ ආසන්න විය.
තාර්කික අනුපිළිවෙල සහ භෞතික අනුපිළිවෙල අතර සහසම්බන්ධය වැඩි කිරීම සඳහා දර්ශකයක් නැවත ගොඩනැඟීම හෝ ප්රතිසංවිධානය කිරීම මගින් ඛණ්ඩනය අඩු කිරීම හෝ ඉවත් කිරීම කළ හැකිය.
ධාවනය කිරීමෙන් පසු
ALTER INDEX ix ON T REBUILD;
මට පහත සඳහන් දේ ලැබුණා
වගුවට පොකුරු දර්ශකයක් නොමැති නම් එය ගොඩවල් ලෙස හැඳින්වේ.
පොකුරු නොවන දර්ශක ගොඩවල් හෝ පොකුරු දර්ශකයක් මත ගොඩනගා ගත හැකිය. ඒවා සෑම විටම මූලික වගුව වෙත පේළි ස්ථානගත කිරීමක් අඩංගු වේ. සංචයක් සම්බන්ධයෙන් ගත් කල, මෙය භෞතික පේළි හඳුනාගැනීමක් (ඉවත් කිරීම) වන අතර එය සංරචක තුනකින් සමන්විත වේ (ගොනුව: පිටුව: තව්). පොකුරු දර්ශකයකදී, පේළි ස්ථානගත කිරීම තාර්කික ය (පොකුරු දර්ශක යතුර).
පොකුරු නොවන දර්ශකයට දැනටමත් ස්වාභාවිකවම සීඅයි යතුරු තීරුව (ය) එන්.සී.අයි යතුරු තීරු ලෙස ඇතුළත් වේ නම් හෝ දෙවන අවස්ථාව සඳහා INCLUDE
-d තීරු ලෙස ඇතුළත් කර තිබේ නම් කිසිවක් එකතු නොවේ. එසේ නොමැතිනම්, අතුරුදහන් වූ සීඅයි යතුරු තීරුව නිශ්ශබ්දව එන්සීඅයි වෙත එකතු වේ.
SQL සේවාදායකය සෑම විටම යතුරු තීරු වර්ග දෙකම සඳහා සුවිශේෂී බව සහතික කරයි. කෙසේ වෙතත්, අද්විතීය ලෙස ප්රකාශයට පත් නොකරන ලද දර්ශක සඳහා මෙය බලාත්මක කරන යාන්ත්රණය දර්ශක වර්ග දෙක අතර වෙනස් වේ.
uniquifier
පවත්නා පේළියක් අනුපිටපත් කරන ප්රධාන අගයන් සහිත ඕනෑම පේළි සඳහා පොකුරු දර්ශක එකතු වේ. මෙය නැගී එන පූර්ණ සංඛ්යාවක් පමණි.
පොකුරු නොවන දර්ශක සඳහා අද්විතීය SQL සේවාදායකය නිශ්ශබ්දව පේළි ලොකේටරය පොකුරු නොවන දර්ශක යතුරට එක් කරයි. මෙය සැබවින්ම අනුපිටපත් පමණක් නොව සියලුම පේළි සඳහා අදාළ වේ.
තීරු ගබඩා දර්ශක සඳහා පොකුරු එදිරිව පොකුරු නොවන නාමකරණය භාවිතා කරයි. SQL සේවාදායක තීරු ගබඩාවලට වැඩි දියුණු කිරීම් පත්රිකාවේ සඳහන් වේ
තීරු ගබඩා දත්ත කිසිදු යතුරක ඇත්ත වශයෙන්ම "පොකුරු" නොවූවත්, ප්රාථමික දර්ශකය පොකුරු දර්ශකයක් ලෙස සඳහන් කිරීමේ සාම්ප්රදායික SQL සේවාදායක සම්මුතිය රඳවා ගැනීමට අපි තීරණය කළෙමු.