چگونه تکه تکه شدن را در پایگاه داده اوراکل بررسی کنیم

Summarize this content to 400 words in Persian Lang
تکه تکه شدن پایگاه داده می تواند عملکرد قابل توجهی را تحت تاثیر قرار دهد و منجر به کندتر پرس و جو و بازیابی ناکارآمد داده شود. در پایگاه داده های اوراکل، تکه تکه شدن معمولاً در فضای جدول رخ می دهد و می تواند بر کارایی ذخیره سازی و بازیابی داده ها تأثیر بگذارد. درک چگونگی بررسی تکه تکه شدن برای حفظ عملکرد بهینه پایگاه داده ضروری است. این مقاله راهنمای دقیقی در مورد چگونگی بررسی تکه تکه شدن در پایگاه داده اوراکل، شامل اسکریپت های مفید و پرس و جوهای SQL برای تجزیه و تحلیل تکه تکه شدن ارائه می دهد.
Fragmentation چیست؟
تکه تکه شدن در یک پایگاه داده به استفاده ناکارآمد از فضای دیسک به دلیل داده های پراکنده اشاره دارد. این می تواند در دو سطح اولیه رخ دهد:
تقسیم بندی داخلی: در یک بخش پایگاه داده واحد، جایی که فضا تخصیص داده می شود اما به طور موثر استفاده نمی شود.
External Fragmentation: در سرتاسر پایگاه داده، جایی که فضای آزاد در چندین بخش تقسیم شده است.
هر دو نوع می توانند بر عملکرد پایگاه داده تأثیر بگذارند و بررسی منظم و رسیدگی به مسائل مربوط به تکه تکه شدن را ضروری می کند.
چگونه تکه تکه شدن را در پایگاه داده اوراکل بررسی کنیم
1. جداول و شاخص ها را تجزیه و تحلیل کنید
تکه تکه شدن می تواند در هر دو جدول و نمایه رخ دهد. اوراکل چندین روش برای تجزیه و تحلیل و گزارش تجزیه و تحلیل ارائه می دهد.
با استفاده از DBMS_REDEFINITION
بسته DBMS_REDEFINITION می تواند به شناسایی تکه تکه شدن در جداول و نمایه ها کمک کند. در اینجا نحوه استفاده از آن آورده شده است:
جداول تکه تکه را شناسایی کنید:
BEGIN
DBMS_REDEFINITION.CHECK_TABLE (table_name => ‘YOUR_TABLE_NAME’);
END;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این روش جدول مشخص شده را از نظر تکه تکه شدن بررسی می کند و توصیه هایی برای تعریف مجدد ارائه می دهد.
تجزیه و تحلیل تکه تکه شدن جدول:
SELECT
table_name,
num_rows,
blocks,
empty_blocks,
avg_row_len
FROM dba_tables
WHERE owner=”YOUR_SCHEMA”
AND table_name=”YOUR_TABLE_NAME”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پرس و جو جزئیاتی در مورد اندازه جدول و استفاده از فضا ارائه می دهد.
با استفاده از DBMS_SPACE
بسته DBMS_SPACE بینش های بیشتری در مورد تکه تکه شدن ارائه می دهد:
بررسی تکه تکه شدن جدول:
EXEC DBMS_SPACE.SPACE_USAGE (table_name => ‘YOUR_TABLE_NAME’);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این روش اطلاعات دقیقی در مورد استفاده از فضا در جدول مشخص شده ارائه می دهد.
تجزیه و تحلیل فضای بخش:
SELECT
segment_name,
segment_type,
tablespace_name,
bytes,
extents,
blocks
FROM dba_segments
WHERE owner=”YOUR_SCHEMA”
AND segment_name=”YOUR_SEGMENT_NAME”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پرس و جو یک نمای کلی از فضای اختصاص داده شده به بخش ها ارائه می دهد.
2. مانیتور تکه تکه شدن با پرس و جوهای SQL
می توانید از پرس و جوهای SQL برای ارزیابی تکه تکه شدن در جداول و نمایه های خود استفاده کنید. در اینجا چند سؤال مفید وجود دارد:
فضای آزاد را در Tablespaces بررسی کنید:
SELECT
tablespace_name,
SUM(bytes_free) / 1024 / 1024 AS free_space_mb
FROM dba_free_space
GROUP BY tablespace_name;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پرس و جو فضای خالی موجود در هر جدول را نشان می دهد که می تواند نشان دهنده تکه تکه شدن باشد.
تجزیه و تحلیل تکه تکه شدن شاخص:
SELECT
index_name,
table_name,
NUM_ROWS,
LEAF_BLOCKS,
DISTINCT_KEYS,
AVG_LEAF_BLOCKS
FROM dba_indexes
WHERE owner=”YOUR_SCHEMA”
AND index_name=”YOUR_INDEX_NAME”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پرس و جو جزئیاتی در مورد تکه تکه شدن شاخص ارائه می دهد.
محاسبه فضای تکه تکه شده در جداول
برای به دست آوردن تجزیه و تحلیل دقیق از تکه تکه شدن در جداول، می توانید از پرس و جو زیر استفاده کنید. این کوئری اندازه کل جدول، اندازه واقعی استفاده شده، فضای تکه تکه شده و درصد تکه تکه شدن را محاسبه می کند:
SELECT
table_name,
avg_row_len,
ROUND(((blocks*16/1024)),2) || ‘MB’ AS “TOTAL_SIZE”,
ROUND((num_rows*avg_row_len/1024/1024),2) || ‘MB’ AS “ACTUAL_SIZE”,
ROUND(((blocks*16/1024) – (num_rows*avg_row_len/1024/1024)),2) || ‘MB’ AS “FRAGMENTED_SPACE”,
(ROUND(((blocks*16/1024) – (num_rows*avg_row_len/1024/1024)),2) / ROUND(((blocks*16/1024)),2)) * 100 AS “PERCENTAGE”
FROM all_tables
WHERE ROUND(((blocks*16/1024)),2) > 0
ORDER BY 6 DESC;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این پرس و جو ارائه می دهد:
اندازه کل: اندازه کل میز.اندازه واقعی: فضای واقعی استفاده شده توسط داده های جدول.فضای تکه تکه شده: مقدار فضای تکه تکه شدهدرصد: درصد فضای تکه تکه شده نسبت به اندازه کل.
3. از Oracle Enterprise Manager (OEM) استفاده کنید
Oracle Enterprise Manager ابزارهای گرافیکی را برای نظارت و مدیریت عملکرد پایگاه داده ارائه می دهد. این شامل ویژگی هایی برای تجزیه و تحلیل تکه تکه شدن است:
به برگه عملکرد بروید:
به تب Performance در OEM بروید.
برای گزارش های تکه تکه شدن، بخش جداول و فهرست ها را بررسی کنید.
از Segment Advisor استفاده کنید:
به Segment Advisor در OEM دسترسی پیدا کنید تا توصیه هایی برای سازماندهی مجدد و تجزیه و تحلیل تقسیم بندی دریافت کنید.
4. استفاده از اسکریپت تجزیه و تحلیل قطعه
برای خودکار کردن فرآیند بررسی تکه تکه شدن، می توانید از اسکریپت زیر استفاده کنید. این اسکریپت تجزیه و تحلیل تکه تکه شدن در جداول و نمایه ها را انجام می دهد و گزارشی تولید می کند که می تواند برای اقدامات بعدی استفاده شود.
— Define the schema and table names to check
DECLARE
v_schema_name VARCHAR2(30) := ‘YOUR_SCHEMA’; — Replace with your schema name
v_table_name VARCHAR2(30) := ‘YOUR_TABLE_NAME’; — Replace with your table name
v_index_name VARCHAR2(30) := ‘YOUR_INDEX_NAME’; — Replace with your index name
BEGIN
— Analyze table fragmentation
DBMS_OUTPUT.PUT_LINE(‘Analyzing Table Fragmentation…’);
FOR rec IN (
SELECT table_name,
num_rows,
blocks,
empty_blocks,
avg_row_len
FROM dba_tables
WHERE owner = v_schema_name
AND table_name = v_table_name
) LOOP
DBMS_OUTPUT.PUT_LINE(‘Table: ‘ || rec.table_name);
DBMS_OUTPUT.PUT_LINE(‘Rows: ‘ || rec.num_rows);
DBMS_OUTPUT.PUT_LINE(‘Blocks: ‘ || rec.blocks);
DBMS_OUTPUT.PUT_LINE(‘Empty Blocks: ‘ || rec.empty_blocks);
DBMS_OUTPUT.PUT_LINE(‘Average Row Length: ‘ || rec.avg_row_len);
END LOOP;
— Analyze index fragmentation
DBMS_OUTPUT.PUT_LINE(‘Analyzing Index Fragmentation…’);
FOR rec IN (
SELECT index_name,
table_name,
NUM_ROWS,
LEAF_BLOCKS,
DISTINCT_KEYS,
AVG_LEAF_BLOCKS
FROM dba_indexes
WHERE owner = v_schema_name
AND index_name = v_index_name
) LOOP
DBMS_OUTPUT.PUT_LINE(‘Index: ‘ || rec.index_name);
DBMS_OUTPUT.PUT_LINE(‘Table: ‘ || rec.table_name);
DBMS_OUTPUT.PUT_LINE(‘Rows: ‘ || rec.NUM_ROWS);
DBMS_OUTPUT.PUT_LINE(‘Leaf Blocks: ‘ || rec.LEAF_BLOCKS);
DBMS_OUTPUT.PUT_LINE(‘Distinct Keys: ‘ || rec.DISTINCT_KEYS);
DBMS_OUTPUT.PUT_LINE(‘Average Leaf Blocks: ‘ || rec.AVG_LEAF_BLOCKS);
END LOOP;
END;
/
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این اسکریپت اقدامات زیر را انجام می دهد:
تجزیه و تحلیل تکه تکه شدن جدول: جزئیات مربوط به اندازه جدول و استفاده از فضا را بازیابی و نمایش می دهد.
تجزیه و تحلیل تکه تکه شدن شاخص: جزئیات مربوط به تکه تکه شدن فهرست را بازیابی و نمایش می دهد.
پرداختن به تکه تکه شدن
هنگامی که تکه تکه شدن را شناسایی کردید، روش های زیر را برای رفع آن در نظر بگیرید:
1. بازسازی شاخص ها
بازسازی ایندکس ها می تواند به رفع پراکندگی کمک کند:
ALTER INDEX YOUR_INDEX_NAME REBUILD;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دستور ساختار فهرست را دوباره سازماندهی می کند و می تواند عملکرد را بهبود بخشد.
2. سازماندهی مجدد جداول
سازماندهی مجدد جداول می تواند به بازیابی فضای تکه تکه شده کمک کند:
ALTER TABLE YOUR_TABLE_NAME MOVE;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دستور جدول را به یک بخش جدید منتقل می کند و به طور موثر آن را یکپارچه می کند.
3. از تعریف مجدد آنلاین استفاده کنید
برای جداول بزرگ، از تعریف مجدد آنلاین استفاده کنید تا زمان خرابی را به حداقل برسانید:
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE (
uname => ‘YOUR_SCHEMA’,
orig_table => ‘YOUR_TABLE_NAME’,
int_table => ‘YOUR_TEMP_TABLE_NAME’);
END;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این روش به شما امکان میدهد تا جداول را تا زمانی که در دسترس هستند سازماندهی مجدد کنید.
نتیجه گیری
بررسی و آدرس دهی تکه تکه شدن در پایگاه داده اوراکل برای حفظ عملکرد و کارایی ضروری است. با استفاده از ابزارها و روش های ذکر شده در این مقاله، از جمله پرس و جوهای SQL و اسکریپت ارائه شده، می توانید مناطق پراکنده را شناسایی کرده و اقداماتی را برای سازماندهی مجدد و بهینه سازی پایگاه داده خود انجام دهید. نظارت و نگهداری منظم به اطمینان از اجرای روان و کارآمد پایگاه داده Oracle شما کمک می کند و تجربه بهتری را برای کاربران و برنامه های کاربردی متکی بر آن فراهم می کند.
تکه تکه شدن پایگاه داده می تواند عملکرد قابل توجهی را تحت تاثیر قرار دهد و منجر به کندتر پرس و جو و بازیابی ناکارآمد داده شود. در پایگاه داده های اوراکل، تکه تکه شدن معمولاً در فضای جدول رخ می دهد و می تواند بر کارایی ذخیره سازی و بازیابی داده ها تأثیر بگذارد. درک چگونگی بررسی تکه تکه شدن برای حفظ عملکرد بهینه پایگاه داده ضروری است. این مقاله راهنمای دقیقی در مورد چگونگی بررسی تکه تکه شدن در پایگاه داده اوراکل، شامل اسکریپت های مفید و پرس و جوهای SQL برای تجزیه و تحلیل تکه تکه شدن ارائه می دهد.
Fragmentation چیست؟
تکه تکه شدن در یک پایگاه داده به استفاده ناکارآمد از فضای دیسک به دلیل داده های پراکنده اشاره دارد. این می تواند در دو سطح اولیه رخ دهد:
تقسیم بندی داخلی: در یک بخش پایگاه داده واحد، جایی که فضا تخصیص داده می شود اما به طور موثر استفاده نمی شود.
External Fragmentation: در سرتاسر پایگاه داده، جایی که فضای آزاد در چندین بخش تقسیم شده است.
هر دو نوع می توانند بر عملکرد پایگاه داده تأثیر بگذارند و بررسی منظم و رسیدگی به مسائل مربوط به تکه تکه شدن را ضروری می کند.
چگونه تکه تکه شدن را در پایگاه داده اوراکل بررسی کنیم
1. جداول و شاخص ها را تجزیه و تحلیل کنید
تکه تکه شدن می تواند در هر دو جدول و نمایه رخ دهد. اوراکل چندین روش برای تجزیه و تحلیل و گزارش تجزیه و تحلیل ارائه می دهد.
با استفاده از DBMS_REDEFINITION
بسته DBMS_REDEFINITION می تواند به شناسایی تکه تکه شدن در جداول و نمایه ها کمک کند. در اینجا نحوه استفاده از آن آورده شده است:
جداول تکه تکه را شناسایی کنید:
BEGIN
DBMS_REDEFINITION.CHECK_TABLE (table_name => 'YOUR_TABLE_NAME');
END;
این روش جدول مشخص شده را از نظر تکه تکه شدن بررسی می کند و توصیه هایی برای تعریف مجدد ارائه می دهد.
تجزیه و تحلیل تکه تکه شدن جدول:
SELECT
table_name,
num_rows,
blocks,
empty_blocks,
avg_row_len
FROM dba_tables
WHERE owner="YOUR_SCHEMA"
AND table_name="YOUR_TABLE_NAME";
این پرس و جو جزئیاتی در مورد اندازه جدول و استفاده از فضا ارائه می دهد.
با استفاده از DBMS_SPACE
بسته DBMS_SPACE بینش های بیشتری در مورد تکه تکه شدن ارائه می دهد:
بررسی تکه تکه شدن جدول:
EXEC DBMS_SPACE.SPACE_USAGE (table_name => 'YOUR_TABLE_NAME');
این روش اطلاعات دقیقی در مورد استفاده از فضا در جدول مشخص شده ارائه می دهد.
تجزیه و تحلیل فضای بخش:
SELECT
segment_name,
segment_type,
tablespace_name,
bytes,
extents,
blocks
FROM dba_segments
WHERE owner="YOUR_SCHEMA"
AND segment_name="YOUR_SEGMENT_NAME";
این پرس و جو یک نمای کلی از فضای اختصاص داده شده به بخش ها ارائه می دهد.
2. مانیتور تکه تکه شدن با پرس و جوهای SQL
می توانید از پرس و جوهای SQL برای ارزیابی تکه تکه شدن در جداول و نمایه های خود استفاده کنید. در اینجا چند سؤال مفید وجود دارد:
فضای آزاد را در Tablespaces بررسی کنید:
SELECT
tablespace_name,
SUM(bytes_free) / 1024 / 1024 AS free_space_mb
FROM dba_free_space
GROUP BY tablespace_name;
این پرس و جو فضای خالی موجود در هر جدول را نشان می دهد که می تواند نشان دهنده تکه تکه شدن باشد.
تجزیه و تحلیل تکه تکه شدن شاخص:
SELECT
index_name,
table_name,
NUM_ROWS,
LEAF_BLOCKS,
DISTINCT_KEYS,
AVG_LEAF_BLOCKS
FROM dba_indexes
WHERE owner="YOUR_SCHEMA"
AND index_name="YOUR_INDEX_NAME";
این پرس و جو جزئیاتی در مورد تکه تکه شدن شاخص ارائه می دهد.
محاسبه فضای تکه تکه شده در جداول
برای به دست آوردن تجزیه و تحلیل دقیق از تکه تکه شدن در جداول، می توانید از پرس و جو زیر استفاده کنید. این کوئری اندازه کل جدول، اندازه واقعی استفاده شده، فضای تکه تکه شده و درصد تکه تکه شدن را محاسبه می کند:
SELECT
table_name,
avg_row_len,
ROUND(((blocks*16/1024)),2) || 'MB' AS "TOTAL_SIZE",
ROUND((num_rows*avg_row_len/1024/1024),2) || 'MB' AS "ACTUAL_SIZE",
ROUND(((blocks*16/1024) - (num_rows*avg_row_len/1024/1024)),2) || 'MB' AS "FRAGMENTED_SPACE",
(ROUND(((blocks*16/1024) - (num_rows*avg_row_len/1024/1024)),2) / ROUND(((blocks*16/1024)),2)) * 100 AS "PERCENTAGE"
FROM all_tables
WHERE ROUND(((blocks*16/1024)),2) > 0
ORDER BY 6 DESC;
این پرس و جو ارائه می دهد:
اندازه کل: اندازه کل میز.
اندازه واقعی: فضای واقعی استفاده شده توسط داده های جدول.
فضای تکه تکه شده: مقدار فضای تکه تکه شده
درصد: درصد فضای تکه تکه شده نسبت به اندازه کل.
3. از Oracle Enterprise Manager (OEM) استفاده کنید
Oracle Enterprise Manager ابزارهای گرافیکی را برای نظارت و مدیریت عملکرد پایگاه داده ارائه می دهد. این شامل ویژگی هایی برای تجزیه و تحلیل تکه تکه شدن است:
به برگه عملکرد بروید:
- به تب Performance در OEM بروید.
- برای گزارش های تکه تکه شدن، بخش جداول و فهرست ها را بررسی کنید.
از Segment Advisor استفاده کنید:
به Segment Advisor در OEM دسترسی پیدا کنید تا توصیه هایی برای سازماندهی مجدد و تجزیه و تحلیل تقسیم بندی دریافت کنید.
4. استفاده از اسکریپت تجزیه و تحلیل قطعه
برای خودکار کردن فرآیند بررسی تکه تکه شدن، می توانید از اسکریپت زیر استفاده کنید. این اسکریپت تجزیه و تحلیل تکه تکه شدن در جداول و نمایه ها را انجام می دهد و گزارشی تولید می کند که می تواند برای اقدامات بعدی استفاده شود.
-- Define the schema and table names to check
DECLARE
v_schema_name VARCHAR2(30) := 'YOUR_SCHEMA'; -- Replace with your schema name
v_table_name VARCHAR2(30) := 'YOUR_TABLE_NAME'; -- Replace with your table name
v_index_name VARCHAR2(30) := 'YOUR_INDEX_NAME'; -- Replace with your index name
BEGIN
-- Analyze table fragmentation
DBMS_OUTPUT.PUT_LINE('Analyzing Table Fragmentation...');
FOR rec IN (
SELECT table_name,
num_rows,
blocks,
empty_blocks,
avg_row_len
FROM dba_tables
WHERE owner = v_schema_name
AND table_name = v_table_name
) LOOP
DBMS_OUTPUT.PUT_LINE('Table: ' || rec.table_name);
DBMS_OUTPUT.PUT_LINE('Rows: ' || rec.num_rows);
DBMS_OUTPUT.PUT_LINE('Blocks: ' || rec.blocks);
DBMS_OUTPUT.PUT_LINE('Empty Blocks: ' || rec.empty_blocks);
DBMS_OUTPUT.PUT_LINE('Average Row Length: ' || rec.avg_row_len);
END LOOP;
-- Analyze index fragmentation
DBMS_OUTPUT.PUT_LINE('Analyzing Index Fragmentation...');
FOR rec IN (
SELECT index_name,
table_name,
NUM_ROWS,
LEAF_BLOCKS,
DISTINCT_KEYS,
AVG_LEAF_BLOCKS
FROM dba_indexes
WHERE owner = v_schema_name
AND index_name = v_index_name
) LOOP
DBMS_OUTPUT.PUT_LINE('Index: ' || rec.index_name);
DBMS_OUTPUT.PUT_LINE('Table: ' || rec.table_name);
DBMS_OUTPUT.PUT_LINE('Rows: ' || rec.NUM_ROWS);
DBMS_OUTPUT.PUT_LINE('Leaf Blocks: ' || rec.LEAF_BLOCKS);
DBMS_OUTPUT.PUT_LINE('Distinct Keys: ' || rec.DISTINCT_KEYS);
DBMS_OUTPUT.PUT_LINE('Average Leaf Blocks: ' || rec.AVG_LEAF_BLOCKS);
END LOOP;
END;
/
این اسکریپت اقدامات زیر را انجام می دهد:
تجزیه و تحلیل تکه تکه شدن جدول: جزئیات مربوط به اندازه جدول و استفاده از فضا را بازیابی و نمایش می دهد.
تجزیه و تحلیل تکه تکه شدن شاخص: جزئیات مربوط به تکه تکه شدن فهرست را بازیابی و نمایش می دهد.
پرداختن به تکه تکه شدن
هنگامی که تکه تکه شدن را شناسایی کردید، روش های زیر را برای رفع آن در نظر بگیرید:
1. بازسازی شاخص ها
بازسازی ایندکس ها می تواند به رفع پراکندگی کمک کند:
ALTER INDEX YOUR_INDEX_NAME REBUILD;
این دستور ساختار فهرست را دوباره سازماندهی می کند و می تواند عملکرد را بهبود بخشد.
2. سازماندهی مجدد جداول
سازماندهی مجدد جداول می تواند به بازیابی فضای تکه تکه شده کمک کند:
ALTER TABLE YOUR_TABLE_NAME MOVE;
این دستور جدول را به یک بخش جدید منتقل می کند و به طور موثر آن را یکپارچه می کند.
3. از تعریف مجدد آنلاین استفاده کنید
برای جداول بزرگ، از تعریف مجدد آنلاین استفاده کنید تا زمان خرابی را به حداقل برسانید:
BEGIN
DBMS_REDEFINITION.START_REDEF_TABLE (
uname => 'YOUR_SCHEMA',
orig_table => 'YOUR_TABLE_NAME',
int_table => 'YOUR_TEMP_TABLE_NAME');
END;
این روش به شما امکان میدهد تا جداول را تا زمانی که در دسترس هستند سازماندهی مجدد کنید.
نتیجه گیری
بررسی و آدرس دهی تکه تکه شدن در پایگاه داده اوراکل برای حفظ عملکرد و کارایی ضروری است. با استفاده از ابزارها و روش های ذکر شده در این مقاله، از جمله پرس و جوهای SQL و اسکریپت ارائه شده، می توانید مناطق پراکنده را شناسایی کرده و اقداماتی را برای سازماندهی مجدد و بهینه سازی پایگاه داده خود انجام دهید. نظارت و نگهداری منظم به اطمینان از اجرای روان و کارآمد پایگاه داده Oracle شما کمک می کند و تجربه بهتری را برای کاربران و برنامه های کاربردی متکی بر آن فراهم می کند.