එය අවශ්ය වන්නේ ඇයි?
තැටි මත පදනම් වූ ගබඩා උපාංගවල දත්ත ගබඩා කළ විට, එය දත්ත කොටස් ලෙස ගබඩා වේ. මෙම කුට්ටි සම්පුර්ණයෙන්ම ප්රවේශ වන අතර ඒවා පරමාණුක තැටි ප්රවේශ මෙහෙයුම බවට පත් කරයි. තැටි කුට්ටි ව්යුහගත කර ඇත්තේ සම්බන්ධිත ලැයිස්තු වලට සමානය. දෙකම දත්ත සඳහා කොටසක්, ඊළඟ නෝඩයේ (හෝ බ්ලොක්) පිහිටීම සඳහා දර්ශකයක් අඩංගු වන අතර, දෙකම එකවර ගබඩා කිරීම අවශ්ය නොවේ.
වාර්තා ගණනාවක් එක් ක්ෂේත්රයක පමණක් වර්ග කළ හැකි බැවින්, වර්ග කළ නොහැකි ක්ෂේත්රයක් සෙවීම සඳහා රේඛීය සෙවීමක් අවශ්ය වන අතර එමඟින් N/2
වාරණ ප්රවේශයන් අවශ්ය වේ (සාමාන්යයෙන්), කොහේද වාරණ N
ගණන මේසය විහිදේ. එම ක්ෂේත්රය යතුරු නොවන ක්ෂේත්රයක් නම් (එනම් අද්විතීය ඇතුළත් කිරීම් අඩංගු නොවේ) එවිට මුළු වගුව N
වාරණ ප්රවේශයන් තුළ සෙවිය යුතුය .
වර්ග කළ ක්ෂේත්රයක් සමඟ, ද්විමය සෙවුමක් භාවිතා කළ හැකිය, එයට log2 N
වාරණ ප්රවේශයන් ඇත. යතුරු නොවන ක්ෂේත්රයක් ලබා දී දත්ත වර්ග කර ඇති හෙයින්, ඉහළ අගයක් සොයාගත් පසු ඉතිරි වගුවේ අනුපිටපත් අගයන් සෙවීම අවශ්ය නොවේ. මේ අනුව කාර්ය සාධනය වැඩි කිරීම සැලකිය යුතු ය.
සුචිගත කිරීම යනු කුමක්ද?
සුචිගත කිරීම යනු විවිධ ක්ෂේත්රයන්හි වාර්තා ගණනාවක් වර්ග කිරීමේ ක්රමයකි. වගුවක ඇති ක්ෂේත්රයක දර්ශකයක් නිර්මාණය කිරීමෙන් ක්ෂේත්ර අගය රඳවා ඇති තවත් දත්ත ව්යුහයක් නිර්මාණය වන අතර එය සම්බන්ධ වාර්තාවට දර්ශකයක් ද වේ. මෙම දර්ශක ව්යුහය පසුව වර්ග කර ඇති අතර එමඟින් ද්විමය සෙවීම් සිදු කිරීමට ඉඩ ලබා දේ.
සුචිගත කිරීමේ අවාසිය නම්, දර්ශක මයිසෑම් එන්ජිම භාවිතයෙන් වගුවක එකට ගබඩා කර ඇති බැවින් මෙම දර්ශකවලට තැටියේ අමතර ඉඩක් අවශ්ය වන අතර, එකම වගුව තුළ ඇති බොහෝ ක්ෂේත්ර සුචිගත කර ඇත්නම්, මෙම ගොනුවට යටින් පවතින ගොනු පද්ධතියේ ප්රමාණයේ සීමාවන් ඉක්මණින් ළඟා විය හැකිය. .
එය ක්රියාත්මක වන්නේ කෙසේද?
පළමුව, නියැදි දත්ත සමුදා වගු සැලැස්මක් ගෙනහැර දක්වමු;
ක්ෂේත්ර නාමය දත්ත වර්ගය තැටියේ ප්රමාණය
id (ප්රාථමික යතුර) අත්සන් නොකළ INT 4 බයිට්
firstName Char (50) බයිට් 50 යි
lastName Char (50) බයිට් 50 යි
emailAddress Char (100) බයිට් 100
සටහන : තැටියේ වටිනාකම මත නිවැරදි ප්රමාණයකට ඉඩ දීම සඳහා වර්චර් වෙනුවට වර්ගය භාවිතා කරන ලදී. මෙම නියැදි දත්ත ගබඩාවේ පේළි මිලියන පහක් අඩංගු වන අතර එය වෙන් නොකෙරේ. විමසුම් කිහිපයක ක්රියාකාරිත්වය දැන් විශ්ලේෂණය කෙරේ. මේවා හැඳුනුම්පත (වර්ග කළ යතුරු ක්ෂේත්රය) සහ පළමු නම භාවිතා කරන විමසුමකි (යතුරු නොවන වර්ගීකරණය නොකළ ක්ෂේත්රයක්).
උදාහරණ 1 - වර්ගීකරණය නොකළ ක්ෂේත්ර වලට අනුව වර්ග කර ඇත
r = 5,000,000
ස්ථාවර ප්රමාණයේ වාර්තා වල නියැදි දත්ත ගබඩාවට අනුව , R = 204
බයිට් ගණනක දිගක් ලබා දෙන අතර ඒවා පෙරනිමි වාරණ ප්රමාණයේ B = 1,024
බයිට් භාවිතා කරන MyISAM එන්ජිම භාවිතා කරමින් වගුවක ගබඩා කර ඇත . වගුවේ අවහිර කිරීමේ සාධකය bfr = (B/R) = 1024/204 = 5
තැටි කොටසකට වාර්තා වේ. වගුව රඳවා තබා ගැනීමට අවශ්ය මුළු කුට්ටි ගණන කුට්ටි වේ N = (r/bfr) = 5000000/5 = 1,000,000
.
හැඳුනුම් ක්ෂේත්රය ප්රධාන ක්ෂේත්රයක් බැවින්, හැඳුනුම් ක්ෂේත්රයෙහි රේඛීය N/2 = 500,000
සෙවුමකට අගයක් සොයා ගැනීමට සාමාන්යයෙන් වාරණ ප්රවේශයන් අවශ්ය වේ . හැඳුනුම් ක්ෂේත්රය ද වර්ග කර ඇති හෙයින්, සාමාන්යයෙන් log2 1000000 = 19.93 = 20
වාරණ ප්රවේශයන් අවශ්ය වන ද්විමය සෙවුමක් කළ හැකිය . ක්ෂණිකව අපට පෙනෙන්නේ මෙය විශාල දියුණුවක් බවයි.
දැන් පළමු නම ක්ෂේත්රය වර්ග කර හෝ ප්රධාන ක්ෂේත්රයක් නොවේ, එබැවින් ද්විමය සෙවීමක් කළ නොහැකි අතර අගයන් අද්විතීය නොවේ, එබැවින් වගුවට නිශ්චිත N = 1,000,000
වාරණ ප්රවේශයන් සඳහා අවසානය දක්වා සෙවීම අවශ්ය වේ . සුචිගත කිරීම නිවැරදි කිරීම අරමුණු කරන්නේ මෙම තත්වයයි.
දර්ශක වාර්තාවක අඩංගු වන්නේ සුචිගත කළ ක්ෂේත්රයක් සහ මුල් වාර්තාවට දර්ශකයක් පමණක් බැවින් එය පෙන්වා දෙන බහු-ක්ෂේත්ර වාර්තාවට වඩා එය කුඩා වනු ඇත. එබැවින් දර්ශකයට මුල් වගුවට වඩා අඩු තැටි කොටස් අවශ්ය වන අතර එමඟින් නැවත වාරණය කිරීම සඳහා වාරණ ප්රවේශයන් අඩු වේ. පළමු නම ක්ෂේත්රයේ දර්ශකයක් සඳහා වන යෝජනා ක්රමය පහත දැක්වේ;
ක්ෂේත්ර නාමය දත්ත වර්ගය තැටියේ ප්රමාණය
firstName Char (50) බයිට් 50 යි
(පටිගත කිරීමේ දර්ශකය) විශේෂ බයිට් 4 ක්
සටහන : MySQL හි දර්ශකයන් වගුවේ ප්රමාණය අනුව දිග බයිට් 2, 3, 4 හෝ 5 කි.
උදාහරණ 2 - සුචිගත කිරීම
සුපුරුදු වාරණ ප්රමාණයේ බයිට් භාවිතා කරමින් r = 5,000,000
දර්ශක වාර්තාගත දිගක් සහිත අපගේ නියැදි දත්ත ගබඩාව ලබා දී ඇත . දර්ශකයේ අවහිර කිරීමේ සාධකය තැටි කොටසකට වාර්තා වේ. දර්ශකය රඳවා ගැනීමට අවශ්ය මුළු කුට්ටි ගණන කුට්ටි වේ .R = 54
B = 1,024
bfr = (B/R) = 1024/54 = 18
N = (r/bfr) = 5000000/18 = 277,778
දැන් පළමු නම ක්ෂේත්රය භාවිතා කර සෙවීම මඟින් කාර්ය සාධනය වැඩි කිරීමට දර්ශකය භාවිතා කළ හැකිය. සාමාන්යයෙන් log2 277778 = 18.08 = 19
වාරණ ප්රවේශයන් සහිත දර්ශකයේ ද්විමය සෙවීමක් සඳහා මෙය ඉඩ දෙයි . සත්ය වාර්තාවේ ලිපිනය සොයා ගැනීම සඳහා, කියවීමට තවත් වාරණ ප්රවේශයක් අවශ්ය වන අතර, මුළු එකතුව 19 + 1 = 20
අවහිර කිරීම සඳහා ගෙන එනු ලැබේ, සුචිගත නොකළ වගුවේ පළමු නම ගැලපීමක් සොයා ගැනීමට අවශ්ය වාරණ ප්රවේශයන් 1,000,000 ට වඩා cry ත හ cry කි .
එය භාවිතා කළ යුත්තේ කවදාද?
දර්ශකයක් නිර්මාණය කිරීම සඳහා අමතර තැටි අවකාශයක් අවශ්ය බව සලකන විට (ඉහත උදාහරණයෙන් බ්ලොක් 277,778 ක් වැඩිපුර, ~ 28% වැඩි වීමක්), සහ බොහෝ දර්ශක මඟින් ගොනු පද්ධති ප්රමාණයේ සීමාවන් නිසා පැන නගින ගැටලු ඇති විය හැකි බැවින්, නිවැරදි දේ තෝරා ගැනීමට ප්රවේශමෙන් සිතා බැලිය යුතුය. ක්ෂේත්ර දර්ශකයට.
දර්ශක භාවිතා කරනුයේ වාර්තා තුළ ගැලපෙන ක්ෂේත්රයක් සෙවීම වේගවත් කිරීම සඳහා පමණක් වන බැවින්, ප්රතිදානය සඳහා පමණක් භාවිතා කරන සුචිගත කිරීමේ ක්ෂේත්ර හුදෙක් ඇතුළත් කිරීමේ හෝ මකාදැමීමේ ක්රියාවලියක් සිදු කරන විට තැටි අවකාශය හා සැකසුම් කාලය නාස්ති කිරීමක් වනු ඇත. වැළකී සිටිය යුතුය. ද්විමය සෙවුමක ස්වභාවය අනුව, දත්තවල කාර්දිනල්භාවය හෝ සුවිශේෂත්වය වැදගත් වේ. 2 ක කාඩිනලිටි සහිත ක්ෂේත්රයක් මත සුචිගත කිරීමෙන් දත්ත අඩකින් බෙදෙන අතර 1,000 ක කාර්දිනල් එකක් මඟින් වාර්තා 1,000 ක් පමණ ආපසු ලබා දෙනු ඇත. එතරම් අඩු කාර්දිනල් භාවයක් සමඟ effectiveness ලදායීතාවය රේඛීය වර්ග කිරීමකට අඩු වන අතර, කාර්ඩිනල්තාව වාර්තාගත සංඛ්යාවෙන් 30% ට වඩා අඩු නම් විමසුම් ප්රශස්තකරණය මඟින් දර්ශකය භාවිතා කිරීමෙන් වැළකී සිටිනු ඇත.