تُستخدم قاعدة بيانات Oracle، باعتبارها قاعدة بيانات كبيرة جدًا، على نطاق واسع في المؤسسات الكبرى التي تتمتع بإنتاجية ضخمة للبيانات وشبكات كمبيوتر واسعة النطاق مثل التمويل والبريد والاتصالات والطاقة الكهربائية والطيران المدني. أما بالنسبة لمسؤولي النظام، فمن المهم بشكل خاص ضمان التشغيل المستقر للشبكة وتحسين أداء قاعدة البيانات لجعلها أكثر أمانًا وكفاءة. كعامل رئيسي يؤثر على أداء قاعدة البيانات، يجب أن يثير تجزئة قاعدة البيانات الاهتمام الكافي لـ DBA. يعد اكتشاف الأجزاء وتنظيفها في الوقت المناسب أحد محتويات الصيانة الأساسية لـ DBA.
1. لماذا تحدث الشظايا؟
عندما يتم إنشاء قاعدة بيانات، سيتم تقسيمها إلى أجزاء منطقية متعددة (Segments) تعرف باسم مساحات الجداول (Tablespace)، مثل مساحة جدول النظام (System)، ومساحة الجدول المؤقتة (Temporary)، وما إلى ذلك. يمكن أن تحتوي مساحة الجدول على نطاقات بيانات متعددة (الامتداد) وكتل نطاق حر واحدة أو أكثر، أي مساحة حرة (مساحة حرة).
العلاقات المنطقية بين مساحات الجدول والقطاعات والفئات والمساحات الحرة هي كما يلي:
عندما يتم إنشاء مقطع في مساحة جدول، سيتم تخصيص مساحة للنطاق الأولي للمقطع من المساحة الحرة الفعالة لمساحة الجدول. عندما تمتلئ هذه النطاقات الأولية بالبيانات، سيطلب المقطع إضافة نطاق آخر. ستستمر عملية التوسيع هذه حتى يتم الوصول إلى الحد الأقصى لقيمة النطاق، وقد لا تكون هناك مساحة حرة في مساحة الجدول للنطاق التالي. الوضع الأمثل هو أنه يمكن تخزين بيانات المقطع في فئة واحدة. بهذه الطريقة، يتم تخزين كافة البيانات بالقرب من البيانات الأخرى في المقطع، وستكون هناك حاجة إلى عدد أقل من المؤشرات للعثور على البيانات. ومع ذلك، هناك العديد من الحالات التي يحتوي فيها المقطع على حقول متعددة، ولا توجد طريقة لإثبات تخزين هذه الحقول في مكان قريب. عند تلبية متطلبات المساحة، لم تعد قاعدة البيانات تغلق النطاق الحر المجاور (ما لم تكن هناك طريقة)، ولكنها تبحث عن أكبر نطاق حر في مساحة الجدول لاستخدامه. سيؤدي هذا إلى تشكيل المزيد والمزيد من المساحات الحرة المنفصلة والمنفصلة والأصغر، أي الأجزاء.
2. تأثير التجزئة على النظام
مع مرور الوقت، سيؤدي الاستخدام الواسع النطاق لأنظمة التطبيقات المستندة إلى قاعدة البيانات إلى توليد المزيد والمزيد من الأجزاء، والتي سيكون لها التأثيران المهمان التاليان على قاعدة البيانات:
1) تكبد انخفاض أداء النظام
بشكل عام، عند تلبية متطلبات المساحة، ستبحث قاعدة البيانات أولاً عن أكبر نطاق مجاني في الوقت الحالي، ويصبح النطاق الحر "الأكبر" تدريجيًا أصغر، ويصبح من الصعب بشكل متزايد العثور على نطاق مجاني كبير بما فيه الكفاية أمر صعب، لذا فإن عوائق السرعة في مساحة الجدول تجعل تخصيص مساحة قاعدة البيانات بعيدًا عن الحالة المثالية؛
2) توزيع كمية كبيرة من مساحة الطاولة
على الرغم من أن بعض المناطق الحرة (مثل زيادة pctin في مساحة الجدول ليست صفرًا) سيتم دمجها بشكل دوري من خلال عملية رئيس الخلفية SMON (مراقبة النظام)، إلا أن هناك دائمًا بعض المناطق الحرة التي لا يمكن إغلاقها تلقائيًا، مما يؤدي إلى إهدار الكثير من الجدول فضاء. .
3. حساب جزء من الفئات الحرة
نظرًا لأن تجزئة المساحة الحرة تتكون من عدة أجزاء، مثل عدد الفئات، والحد الأقصى لحجم النطاق، وما إلى ذلك، يمكننا استخدام قيمة FSFI--قيمة مؤشر تجزئة المساحة الحرة (مؤشر تجزئة المساحة الحرة) لتعكس بشكل حدسي:
FSFI=100*SQRT(الحد الأقصى(المدى)/مجموع(المدى))*واحد/SQRT(SQRT(العدد(المدى)))
كما يمكن أن نرى، الحد الأقصى لقيمة FSFI هو 100 (مساحة طاولة واحدة مثالية). مع زيادة النطاق، تنخفض قيمة FSFI ببطء، ومع انخفاض الحد الأقصى لحجم النطاق، تنخفض قيمة FSFI بسرعة.
يمكن استخدام البرنامج النصي التالي لحساب قيمة FSFI:
حساب قيمة rem FSFI
ريم fsfi.sql
تنسيق العمود FSFI 999,99
حدد tablespace_name،sqrt(max(blocks)/sum(blocks))*
(100/sqrt(sqrt(count(blocks)))) FSFI
من dba_free_space
المجموعة حسب tablespace_name بترتيب واحد؛
التخزين المؤقت fsfi.rep;
/
بكرة قبالة؛
على سبيل المثال، عند تشغيل البرنامج النصي fsfi.sql في قاعدة بيانات معينة، يتم فقدان قيم FSFI التالية:
TABLESPACE_NAME FSFI
------------------------------- -------
آر بي إس 74.06
النظام 100.00
درجة الحرارة 22.82
أدوات 75.79
المستخدمين 100.00
أدوات المستخدم 100.00
YDCX_DATA 47.34
YDCX_IDX 57.19
YDJF_DATA 33.80
YDJF_IDX 75.55
---- بمجرد حساب قيمة FSFI لقاعدة البيانات، يمكن استخدامها كمعلمة قابلة للمقارنة. في مساحة الجدول التي تحتوي على مساحة حرة فعالة كافية وقيمة FSFI أعلى من 30، نادرًا ما تتم مواجهة مشكلات المساحة الحرة الفعالة. عندما تكون المساحة قريبة من المعلمات القابلة للمقارنة، يجب إلغاء تجزئتها.
4. فرز أجزاء الفئات المجانية
قيمة pctincrease لمساحة الجدول غير صفر
يمكنك تغيير معلمة التخزين الافتراضية pctinزيادة مساحة الجدول إلى قيمة غير صفرية. عادةً ما يتم تعيينه على واحد، مثل:
تغيير درجة حرارة مساحة الجدول
التخزين الافتراضي (pctincrease 1)؛
بهذه الطريقة، سيقوم SMON تلقائيًا بتجميع الفئات المجانية. يمكنك أيضًا تجميع الفئات المجانية يدويًا:
تغيير درجة حرارة مساحة الطاولة؛
5. التقاط أجزاء الفقرة
نحن نعلم أن الشرائح تتكون من فئات. في بعض الحالات، من الضروري تنظيف شظايا المقطع. لعرض المعلومات المتعلقة بالقطاع، قم بعرض قاموس البيانات dba_segments، وللحصول على معلومات الفئة، قم بعرض قاموس البيانات dba_extents.
الاستعلام عن شريحة البيانات
حدد اسم القطاع، اسم مساحة الجدول، بايت، كتل من USER_EXTENTS؛
قطاع دليل الاستعلام
حدد اسم_الفهرس،_مالك_الطاولة،_اسم_الطاولة،_اسم_مساحة_الطاولة من USER_EXTENTS؛
عرض معلومات المقطع من خلال dba_segments
حدد tablespacee_name،count(*) nobjects، round(sum(bytes)/1024/1204/1024.2) GB،sum(blocks)،sum(extents) from
مجموعة dba_segments حسب التراكمي (tablespace_name)؛
إذا كان المقطع مجزأ بشكل مفرط، فإن أسهل طريقة لضغط بياناته في نطاق هي إعادة بناء المقطع بمعلمات التخزين الصحيحة، ثم إدراج البيانات من الجدول القديم في الجدول الجديد، وفي نفس الوقت حذف الجدول القديم . يمكن إنجاز هذه العملية باستخدام أداة الاستيراد/التصدير (الإدخال/الإخراج).
يحتوي أمر التصدير () على علامة (مضغوطة)، والتي عند قراءة الجدول ستؤدي إلى قيام التصدير بتحديد مقدار المساحة الفعلية المخصصة للجدول، وسوف يكتب معلمة تخزين تهيئة جديدة لبيانات تفريغ الإخراج - أي، كل تخصيص مساحة. إذا تم إغلاق هذا الجدول، استخدم أداة الاستيراد () لإعادة إنشائه. بهذه الطريقة، سيتم وضع بياناتها في شريحة أولية جديدة أكبر. على سبيل المثال:
ملف المستخدم/كلمة المرور exp=ضغط exp.dmp=منح Y=فهارس Y=Y
الجداول = (الجدول الأول، الجدول الثاني)؛
إذا سارت عملية الإخراج بسلاسة، فاحذف الجدول الذي تم تصديره من المكتبة، ثم قم باستيراد الجدول من بيانات تفريغ الإخراج:
ملف المستخدم/كلمة المرور = التزام exp.dmp = Y المخزن المؤقت = 64000 كامل = Y