en-UShe-IL
You are here:   Blog
Register   |  Login

Blog Archive:

Maximize
* Can be used in order to search for older blogs Entries

Search in blogs


Blog Categories:

Maximize
* Can be used in order to search for blogs Entries by Categories

Blog Tags:

Maximize
* Can be used in order to search for blogs by keywords

TNWikiSummit


Awared MVP 


 


Microsoft® Community Contributor 


Microsoft® Community Contributor


 Read first, before you you use the blog! Maximize
אוק20

Written by: ronen ariely
20/10/2013 06:40 RssIcon

שרת ה SQL מנהל את קובץ הלוג הפיסי ביחידות וירטואליות הנקראות Virtual Log File או בקיצור VLF. לקבצים הווירטואליים אין גודל קבוע ואין כמות קבועה!

יחידות אלו הן מקשה אחת. מרגע שנוצרה יחידה וירטואלית כזו הרי שהיא לא יכולה להתפצל. הקובץ וירטואלי יחתך (truncated) רק אם כל העסקאות (transaction) הרשומות בו הסתיימו (ז"א עברו committed או roll back).

כאשר קובץ הלוג גדל, השרת מייצר יחידות וירטואליות נוספות. הגודל של היחידות החדשות יקבע לפי (1) הגודל שיש להוסיף לקובץ הפיסי ו(2) כמות הקבצים הווירטואליים שנוספים. כמות הקבצים שנוצרת נקבעת לפי הגודל שנוסף לקובץ הפיסי (נקבע במאפיין auto-growth בזמן יצירת הקובץ), וזאת לפי החוקיות הבאה:

* תוספת של עד 64MB תגרור הוספה של 4 קבצים.

*תוספת של עד 1GB תגרור הוספת 8 קבצים.

*תוספת של יותר מ 1GB תגרור הוספת 16 קבצים.

ניהול נכון של הקבצים הווירטואליים יכול להיות גורם מכריע בביצועים של מסד הנתונים. כמות קבצים גדולה מדי יכולה לגרור האטה בפעולות שונות (כמו גיבוי/שחזור) בשל הצורך לגשת למספר גדול, מצד שני גודל קבצים גדול מדי יגרום לכך ששחרור הקובץ ייקח זמן רב ויכול ליצור איטיות המערכת, מה גם שהדבר יכול לגרום לגדילה של הקובץ הפיסי ויצירת קובץ חדש במקום שימוש בקבצים לא פעילים שעדיין לא עברו truncated במלואם. במצב אידאלי גודל קובץ הלוג הפיזי נשמר קבוע, הקבצים הווירטואליים יהיו בגודל שווה (בקירוב), אחוז הקבצים הפעילים (status 2) לא יהיה גבוה מדי. כמות הקבצים לא תהיה גדולה מדי.

ניהול הקבצים הווירטואליים כולל שלוש שלבים: (1) בדיקת מספר הקבצים הווירטואליים שיש לנו בכל קובץ לוג, (2) קביעת המספר הרצוי של הקבצים הווירטואליים שלנו. (3) קביעת הערך של auto-growth, כיווץ הקובץ הפיסי, הגדלת הקובץ הפיסי על מנת לקבל את הגודל הרצוי.

זה זמן טוב לעבור ל SSMS

/****************************************************************************** */
/**                                                                             */
/**                                              Transaction Log File Structure */
/**                                                                             */
/****************************************************************************** */
 
USE AdventureWorksDW2012
GO
 
------------------------------------------------ DBCC LOGINFO
DBCC LOGINFO('AdventureWorksDW2012')
GO
 
/*
        חידה: למה מספר הקבצים לא תואם לכפולות של 4 כפי שהן נוצרים
        -------------------------------------------------------------
*/
 
/*       _______________________________________________      */
/*                                                            */
/*       ======     לפירוט והסבר נעבור לאקסל  ========      */
/*       _______________________________________________      */
 
 
 
/*    Q&A      */
-- Q: DBCC LOGINFO returns many rows with status = 2
-- A: you have full recovery but haven't backed up the transaction log,
--    you have CDC enabled on the database,
--    or your are using replication / mirroring.
--   
--    Check if CDC is Enable
      select is_cdc_enabled
      from sys.databases
      where name = '_ArielyAccessoriesDB'
 
--    To check the reasone run:
      select log_reuse_wait_desc,*
      from sys.databases
      where name = '_ArielyAccessoriesDB'
      GO
      -- * if the log_reuse_wait_desc = NOTHING then the number of rows with status = 2 should be one
      DBCC LOGINFO(_ArielyAccessoriesDB)
      GO
      -- * If all you do is a FULL backup, the log is not cleared for reuse, only a LOG backup will free the VLF's for reuse under FULL recovery.
       
 
 
/* Helper Queries */
 
-- Get all log files size
DBCC SQLPERF(LOGSPACE);
GO
 
-- Get Open Transactions
DBCC OPENTRAN
GO
/*
Transaction information for database 'AdventureWorksDW2012'.
Oldest active transaction:
    SPID (server process ID): 68
    UID (user ID) : -1
    Name          : user_transaction
    LSN           : (1274:505:1)
    Start time    : Oct 18 2013 10:26:29:390PM
    SID           : 0x010500000000000515000000456f93ad8ebacc858991f193f1030000
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
*/

.