Skip to main content

על עלויות ב SQL Azure

זהו נושא מעניין ומיוחד רק לענן בניגוד ל SQL Server רגיל שאתה משלם על חומר ורישיון, פה אתה משלם על תעבורה ועל זיכרון.

חיוב ברמת ה SQL Azure מתחלק ל2 רמות של חיוב:
1.      עלות בסיסי נתונים שנרכשים.
2.      עלות תעבורה אל בסיס הנתונים וממנו (כאשר ממנו אל ה windows azure לא מחושב).

1.      עלות בסיסי נתונים שנרכשים.
ישנן 2 סוגי שרתים שאפשר לרכוש Web addition and Business addition כאשר השוני בניהם זה גודל הדיסק שאתה רוכש  (ניתן בכל רגע נתון לשדרג את הגודל של בסיס הנתונים – אם יגיע לקצה גבול הגודל ולא תדאגו להגדיל הוא פשוט יתקעלהלן טבלת העלויות:
  • Web Edition
    • $9.99 per database up to 1GB per month
    • $49.95 per database up to 5GB per month
  • Business Edition
    • $99.99 per database up to 10GB per month
    • $199.98 per database up to 20GB per month
    • $299.97 per database up to 30GB per month
    • $399.96 per database up to 40GB per month
    • $499.95 per database up to 50GB per month
רואים ברשימה שמה שקובע זה גודל בסיס הנתונים כך שאם כמשל לקחת גירסה של 1GB הרי ברמה יומית מדובר על 0.33$ וכך זה יחושב, לפי הימים שהיו לך בחודש. אם יש לך 2 בסיס נתונים זה יחושב לפי 0.66$.
כמה בסיסי נתונים יש לך כל יום?
select time,sku,quantity   from sys.database_usage 

דוגמא לתוצאת ריצה:
2.      לחישוב זה של עלות שרת מצטרפת עלות תעבורה אל בסיס הנתונים וממנו:
נתחיל מהשאילתא הבסיסית:
SELECT *
  FROM sys.bandwidth_usage
  WHERE time >= '20110501' 
המחזירה תוצאות מדהימות אלו:
Time – עמודה זו יש שעה למשל רשום 8:00:00:000 זה מסכם מידע מ 8 עד 9 לפי שעון שרת – תלוי באיזה מרכז נמצא השרת (על מיקום ואופי חוות השרתים – זה כבר נשאיר למאיר לדבר....)
Database_name – קשה לנחש... שם בסיס הנתונים עליו התבצע איסוף הנתונים
Direction – גם כאן קשה לנחש... הערכים האפשריים Egress/Ingress – המייצגים  Output\Input כלומר data הנכנס או יוצא מבסיס הנתונים ואליו.
Class – הערכים האפשריים Internal\External . כאשר זהו מידע פנימי (Internal) הוא לא נושא בעלויות... (יללה כולם למסור מידע פנימי). מידע פנימי פירושו מידע היוצא או הנכנס מה windows azure ל SQL Azure  ולא אל שאר העולם.
Time_period – הערכים האפשריים OffPeak\Peak – ופירושו הוא מתי אירע האירוע האם בשעות העומס או לא למשל אם זה שרת שיושב בצפון ארה"ב שעות העומס הן בין 10 בבוקר ל 6 בערב
Quantity – סכום של כמות מידע שעברה ב KB

עכשיו לשוס – איך מחשבים – יום לימודים ארוך – אבל לכן אני כותב כדי להקל....
מידע Internal לא מחוייב.

מידע הזורם פנימה Ingress בזמן OffPeak גם לא מחושב – וזה נכון עד סוף יוני 2011
עלויות תלויות היכן המרכז מחשבים שאתה מתחבר אליו :

בצפון אמריקה או אירופה למשל  -  $0.10 per GB in / $0.15 per GB out
אסיה -  $0.10 per GB in / $0.20 per GB out

נריץ את זה:

select direction,
    time_period,   
    sum(
        case when sys.bandwidth_usage.direction = 'Egress'
                then (0.15 * quantity/ (1024*1024) )    
            when sys.bandwidth_usage.direction = 'Ingress'
                then (0.10 * quantity/ (1024*1024))
        end ) as "cost"
        from sys.bandwidth_usage
        where datepart(yy,time) = datepart(yy, getutcdate()) and    
        datepart(mm,time) = datepart(mm, getutcdate()) and
        class = 'external'
        group by direction, time_period
נקבל את זה:

direction  time_period  cost
---------- ------------ ---------
Egress     OffPeak      0.000006
Ingress    OffPeak      0.000000
Egress     Peak         0.000575
Ingress    Peak         0.010554

מעולה – כל המידע לפנינו
ניסכום ונוריד מה שלא משלמים   (מה לא משלים - משתנה אחת לכמה זמן למשל היה שינוי בראשון ליולי) אפשר כמובן להוסיף פילטר לפי חודש...

select sum(
    case when sys.bandwidth_usage.direction = 'Egress'
            then (0.15 * quantity/ (1024*1024) ) 
        when sys.bandwidth_usage.direction = 'Ingress'
            then (0.10 * quantity/ (1024*1024)) 
    end
    ) as "cost"
 from sys.bandwidth_usage
 where
 class = 'external' and
(direction!='Ingress' and time_period!='offpeak')

והנה עלות התעבורה....

צרפו את עלות התעבורה לעלות השרת ויש לנו עלות ה SQL Azure, יש לזכור שהתנאים והעלויות יכולים להשתנות אולם זה מה שיש כרגע.


עידכון בגירסת יולי הורידו את כל מה שזורם אל הענן..... נעדכן בקרוב 


Comments

Popular posts from this blog

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...

Configuring secondary database in Azure SQL DB - Bug found

Hi All Last week we had an issue with a secondary DB in geo replication and fail over group. To make the long story short we had to delete the secondary and recreate a secondary from scratch . And now let me tell you the story, we build a DB in P6 tier - very high, expensive and highly available. Then we add a geo replication copy via the platform, like it shows here. This is take from MSFT documentation: https://docs.microsoft.com/en-us/azure/azure-sql/database/active-geo-replication-overview It is written:  " Both primary and secondary databases are required to have the same service tier. It is also strongly recommended that the secondary database is created with the same backup storage redundancy and compute size (DTUs or vCores) as the primary. If the primary database is experiencing a heavy write workload, a secondary with lower compute size may not be able to keep up with it. That will cause redo lag on the secondary, and potential unavailability of the secondary. To mit...