Azure SQL DB/DW 系列(1)——首次使用感受

本文屬於Azure SQL DB/DW系列

  1. 雲平臺的產品變化非常快,所以本系列所有內容都不保證在半年或者一年之後還能適用,最新的內容還需查看官方文檔。我也會盡量給出官方鏈接。
  2. 由於不同的雲供應商有自己的封裝,加上本人目前公司的項目使用國際版的微軟雲Azure,所以我的環境只集中在國際版的Azure平臺。
  3. 本文屬於需要不斷完善的文章,一旦我在工作和學習中有新的內容,會同步更新到本文種。
  1. Azure SQL DB/DW 系列(1)——首次使用感受
  2. Azure SQL DB/DW 系列(2)——入門級監控性能的工具
  3. Azure SQL DB/DW 系列(3)——Query Store簡介
  4. Azure SQL DB/DW 系列(4)——Query Store案例(1)

前言

  雲計算已經不再是什麼新鮮事,作爲IT人員更加如此。目前我負責Azure 平臺的SQL DB和SQL DW(現在叫Azure Synapse Analytics,不過名字太不好記,我們還是習慣用DW來指代)。由於工作需要,我會整理各種產品的費用,配置和適用場景等資料。也會根據項目要求進行一些平臺遷移,比如最近要做SQL DB遷移到SQL DW的工作。
  本系列第一篇,我打算介紹一下工作中困擾我最多的問題——性能問題。準確來說是性能監控。之所以那麼困難,是因爲SQL DB和SQL DW是PaaS平臺產品,換句話來說,它們有很多的限制,特別是對常規DBA工作而言。我可以在傳統環境下使用sp_whoisactive來監控和解決絕大部分性能問題。但是這個極其有用的sp並不能在部署到SQL DB上,這個接下來會說。

PaaS平臺和傳統平臺的不同

  在開始之前,有必要說一下PaaS和傳統平臺(也就是在操作系統上面安裝SQL Server,不管這臺服務器是實體機,還是自建機房的虛擬機,或者在雲平臺上建的虛擬機(IaaS),由於它們幾乎都是一樣的,所以歸成一類)的一些差異,我不打算說全部,畢竟我沒有“遇到過”全部情景。我只想介紹我在實際項目中遇到的問題,這樣比官方文檔更有血有肉,而且我在以後找問題甚至傳遞經驗的時候也更有說服力。

連接方式不同

  假設現在你已經有了一個通過Azure的門戶(portal)或者Powershell創建的各種前置資源,由於我不是公司雲平臺的超級管理員,所以我沒辦法演示這部分。當環境已經交付並提供連接信息之後,你就可以用SSMS或者Azure Data Studio來連接PaaS的數據庫了。但是這個時候你會發現幾個與常規連接不同的地方:

  1. 如果一個實例(本地版)或者叫服務器(PaaS)下有多個數據庫,雲版本在連接時就需要指定,否則會到master或者所用賬號默認指定的數據庫中,非master庫一旦連接成功之後,你需要使用新建窗口(ctrl+N)的方式來選擇其他數據庫。不能在界面中選擇。如圖直接登錄的話,會登陸到賬號配置的默認數據庫。
    在這裏插入圖片描述
  2. 或者在連接的過程選擇目標數據庫:
    在這裏插入圖片描述
  3. 在連接的過程中,還有一個比較煩人的問題就是公有云的外圍設置,特別是防火牆和權限設置,這個問題經常影響產品測試,進行很多嘗試之後才發現網絡不通或者賬號不具有足夠的權限。

不支持的T-SQL命令

  下面說一下一些在本人工作過程中發現的不支持的功能,具體內容還是以官網爲準:Azure SQL 數據庫不支持的 Transact-SQL 語法

  • 不能用use:首當其衝的是“Use” 數據庫名,這個也是sp_whoisactive不能使用的其中一個原因。
  • 某些sp_help命令不能用,比如sp_helpuser

不能使用的功能

  1. 在SSMS中你看不到msdb
  2. PaaS版本的SQL Server有單庫4TB的大小限制。
  3. 不支持備份還原操作,但是在門戶上可以操作。並且默認保留7天備份,可以選擇35天,最高10年(LTR,long-term retention)。
  4. 除了託管實例(managed instance)之外,不支持CDC,這點很要命,很多DW/OLAP項目都需要CDC來跟蹤數據變更並進行數據同步。
  5. 不能操作幾乎所有常規的文件級別功能,這部分由微軟來管理。
  6. 賬號的配置有所不同,可以看我另外一篇:SQL Azure 工作積累(1)——添加用戶到Azure SQL DB
  7. SQL Agent需要用其他Azure的服務來搭配。
  8. 待補充。

PaaS的優勢

  但是無可否則,PaaS的DB有它自己的優勢,比如可以很容易地擴展資源,而不用像傳統模式那樣走流程等到貨然後上架,有時還會出現機架不夠空間的情況。
  還有一點,所有SQL Server上的新功能都首先會在PaaS平臺上出現,也就是說PaaS的功能是最新的,除了那些天生就是爲了非雲環境開發的功能。所以你可以在Azure SQL DB上嘗試到最新的功能。

上雲的挑戰

  在使用過程中,我感覺到幾個挑戰,首先就是你需要學習大量的雲及特定雲的服務/產品,比如SQL Server的SQL Agent,大數據相關的配套,還有網絡配置,網絡安全等內容。畢竟很多在本地環境下可以一起使用的功能被拆成很多個服務/產品,如何使用及打通鏈路都是額外的工作量。
  其次就是由於某些功能的不支持,不是每個系統都能簡單地遷移到雲上。需要大量的工作量。
  自從出現了雲平臺之後,我們會經常聽說某某新功能,覺得可以試用,結果發現只能適用於雲或者本地,所以在接下來的日子裏,我們都要首先了解某個功能的適用環境。這也增大了我們的學習成本。
  溝通成本,現在很多術語已經有了專用的指代,而不是當初的簡單SQL Server就包含了數據庫的全部。比如現在SQL Server實際上就是隻非雲版本, Azure SQL DB或者SQL DB就是指微軟雲上的SQL Server PaaS版本,Azure Synapse Analytics (SQL DW) 指的是微軟雲上的數據倉庫PaaS版本。SQL Server on Linux指的是Linux平臺上的SQL Server本地版。後續我也會使用這種叫法,這種叫法得到了微軟的認可(就是在與微軟技術支持溝通過程中的叫法)。

下一文:Azure SQL DB/DW 系列(2)——入門級監控性能的工具

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章