Skip to main content

What is Azure SQL Database DTU and its connection to SQL Database elastic pools - Part 1

שלום לכולם
אנו DBA's תן לנו SSD, תן לנו יותר RAM, תנו לנו עוד Cores, שימו את הלוגים על דיסקים מהרים - תמי תמיד יש לנו בקשות ותלונות לכולם.... רק לא לנו עצמינו.

אבל האמת המרה היא שמה שחשוב בסוף זה ה Latancy, כמה זמן לקח לפעולה להתבצע - ובאמת באמת לא משנה מה התשתית של הברזלים, אצלינו באיטורו - לקוחות מכניסים טרזקציות כספיות... בסוף בסוף זה באמת לא משנה מה רץ ועל מה רץ - חשוב שזה ירוץ מהר - שפוזיציה לא תיכנס ביותר מ 20 MS לצורך העניין.

ולכן בעובדינו בענן ובמיוחד בחלק ה PAAS  שלו, אין לדעת מה רץ מאחורי הקלעים, אנו לא יודעים אילו מכונות מריצות מה והיכן יושבים הלוגים.
אז איך נמדוד כמה מה מתאים לנו ועל מה אנו צריכים להושיב את בסיס הנתונים שלנו? ומהו הכלי לביצוע benchmark?

ובכן ב SQL Azure הכלי הוא מדידת DTU.

לפני זמן מה כשהכריזו על  SQL Database elastic pools, מיד התחלתי לבדוק את המוצר, ולנסות להבין האם הוא מממש את ההבטחה שיוצריו הבטיחו לנו.
תוך כדי בדיקות וחקירות, הבנתי שבכדי להסביר את המוצר ומה שעומד מאחריו לא אוכל להתחמק מלהסביר על ה DTU.

הסבר על ה DTU רציתי לעשות מזמן. זהו מושג חובה בהבנת התנהלות של SQL Azure.
אבל התחמקתי מההסבר כי ל DBA קלאסי קשה עם המושג הזה (כמו שהסברתי למעלה).

אז הנה הכריחו אותי להסביר.

היום אסביר על DTU , ובפוסט הבא, אם וכאשר אגיע לכך, אסביר על SQL Database elastic pools .

DTU לפי ההגדרה הרישמית הוא:

Database Throughput Unit (DTU): DTUs provide a way to describe the relative capacity of a performance level of Basic, Standard, and Premium databases. DTUs are based on a blended measure of CPU, memory, reads, and writes. As DTUs increase, the power offered by the performance level increases. For example, a performance level with 5 DTUs has five times more power than a performance level with 1 DTU. A maximum DTU quota applies to each server. For more information on DTU quotas
 

משפט המפתח:
blended measure of CPU, memory, reads, and writes
לקחו מדידה של המטריקות הללו והרכיבו מדד של DTU, שבסופו של דבר נמדד ב אחוזים כלומר אם אתם מגיעים ל 100% DTU זהו סימן שאתה מנצל את כל משאבי החומרה המיועדים לחומרה - לא ינתקו קוננקשין, אין פה מגבלה של ביצוע - אלא פשוט העבודה תתבצע יותר לאט.
 
כיצד הם מחשבים DTU?
התשובה היא די פשוטה יש טבלה בכל בסיס נתונים שדוגם את המדדים כל כמה שניות, אגב הוא שומר אותם באגרגציה של 5 דקות בבסיס הנתונים master, ועל סמך המדדים הללו יש נוסחא לחישוב DTU.
שמו של ה DMV הוא:
sys.dm_db_resource_stats

שמכיל את העמודות:
avg_cpu_percent
avg_log_write_percentavg_data_io_percent
avg_memory_usage_percent
 
ומתוך מידע זה יש DTU.
בפורטל החדש כאשר לוחצים על בסיס נתונים עולה הגרף של DTU ישר למעלה.


אפשר גם ליצור התרעה דרך הפורטל במידה וה DTU גבוה מידי.

נקודה חשובה נוספת שיש ליזכור - הדברים משתנים מידי פעם - אם למשל פעם p1 היה 100 DTU היום הוא יותר.

עוד נקודה אחרונה לפני לינקים וטבלאות מידע - ל  DTU יש מיגלה ברמת Server כלומר לסרבר מוגדר כמה DTU הוא יכול להיות סך הכל וכל בסיס הנתונים המרכיבים אותו לא יכולים להיות בסכום גבוה ממה שמוגדר.

SQL Server ב Azure זו יחידה לוגית שמגדירה כמה נושאים משותפים של בסיס נתונים כמו חוקי firewall  וגם DTU.

מספר לינקים חשובים:

טבלאות והסברים מה יש בכל tier ברמה של כמה טרנזקציות לשניה, וכמה DTU התמונה מאד ברורה ממאמר זה:
https://msdn.microsoft.com/en-us/library/azure/dn741336.aspx

הסבר על ה benchmark:
https://msdn.microsoft.com/en-us/library/azure/dn741327.aspx

בלוג של בחור מדהים שביצע השוואות בין tiers שונים וכתב כמה בלוגים בנושא - הבעיה שוב שכל כמה חודשים יש שיפורים והתוצאות נכונות לזמנן אולם זה נותן תמונה מעניינת ולרוב נכונה לגבי מה יש ומה אין.
https://cbailiss.wordpress.com/2014/09/16/performance-in-new-azure-sql-database-performance-tiers/
עד כאן להיום...
אם לא הייתי ברור או הארכתי מידי מוזמנים לשלוח מייל ולשאול

יללה נלך לראות ברצלונה באיירן..
פיני
 

Comments

Popular posts from this blog

Extended Events in SQL Azure

Hi Everybody   Today an English post about 'Extended Events in SQL Azure', some of you shorten the name to 'EE' and some to 'XEvent'. I Love EE so this is how I will call it in this post.   This feature was introduce in SQL Server 2008 and its should help collecting DATA about what is running in the Server.   More Details about this SQL Server feature can be found in this Link: https://msdn.microsoft.com/library/bb630282.aspx?f=255&MSPPError=-2147217396   There are a few differences between EE in SQL Azure and regular SQL Server: In SQL Server versions the EE are on the Server level and therefore you create sessions on Server. In SQL Azure the server is a virtual entity - so the EE is in DB level and you create the session on DataBase. In SQL Server versions the EE can write to files on the server. SQL Azure does not have drives for files (SQL Azure is PAAS.....:-)). There is an option to write to blob storage, for this we need t...

How to restore deleted Azure Synapse dedicated SQL pool

  Existing dedicated pool can be easily restored from Azure portal or PowerShell command, but for now deleted pool could be restored from PowerShell only! Example: # Connect to Azure with system-assigned managed identity $AzureContext = (Connect-AzAccount -Identity).context # set and store context $AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext # $AzureContext = Set-AzContext -SubscriptionName $SubscriptionName -DefaultProfile $AzureContext $SubscriptionName="Databases" $ResourceGroupName="stg-rg-we" $ServerName="stg-synapse-we"   $DatabaseName="sql_we_2023_11_07_13_42" $NewDatabaseName="sql_dp_we_deleted" ######################################## $token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token $SubscriptionId = "ce088f9e-1111111a3914b" $DedicatedPoolEndPoint = "stg-synapse-we.sql.azuresynapse.net" $DedicatedPoolName = $DatabaseNam...

The journey to the Lakehouse

A long time has passed since the last post, we have gone through a long and tedious journey to adapt what Azure offers us, to our needs. Our needs were simple, the Current Datawarehouse (SQL Server on VM inazure) served the BI. ML teams worked on GCP, we want to let both teams to work on Azure in a platform that will have the ability to scale and will not fail every 2 days. We checked: Snowflake on azure Synapse analytics GCP We decided to go for the full Azure product for the reasons: Migration time support costs Synapse as a platform contains many components, and the challenge was to find what fits  us as an organization and as a group. The knowledge of the people and their abilities influenced the plans. Here's what we planned and what we did: We start to put everything in the Data Lake in parquet or delta format, build on top of Azure ADLS gen 2. We had to move some data to T-SQL compatible platform, so this involves setting up a dedicated Synapse pool , which is a fully man...