我踩過的聽過的那些坑
題目是黃釗吉大牛出的, 答案的自己寫的。
1.SQL Server 最小儲存單元是什麼?多大?再上一層儲存單元是什麼?多大?
答:SQL Server最小的儲存單位是頁(Page),一個頁的大小是8K=8192位元組。頁頭的大小是固定的96個位元組,所以剩下8192-96=8096個位元組用於儲存資料行和行偏移矩陣。再上一層的儲存單元是:區。區是管理空間的基本單位。一個區是八個物理上連續的頁(即
64 KB)。
2.堆表和非堆表的本質區別?
堆表無序,非堆表有序(有聚集索引)。
3.SQL Server目前有多少種高可用技術?分別是什麼?
映象、複製訂閱、快照、日誌分發、故障轉移叢集、Alwasyon。
4.SQL Server有多少種索引?儘可能列出來。
聚集索引、非聚集索引、唯一索引、包含索引、過濾索引、列聚集索引。
5.SQL Server有多少個系統庫?
master, model, msdb, tempdb, resource
6.如果一個報表儲存過程很慢,你的思路是什麼?
--1. 先標記時間, 查出哪裡慢, 是否有堵塞;
--2. 用工具測試看下伺服器的IO是否正常;
--3. 對於複雜的多表查詢, 改為分步驟查詢, 中間用臨時表快取資料;
--4. 觀察執行計劃,看是否需要新增索引。
7.圖形化執行計劃閱讀順序?
8.怎麼在SSMS中得知某個SQL語句的物理讀、邏輯讀次數?
SET STATISTICS IO ON
9.Profiler/SQL Trace和Extent Event相比,在過濾資料的行為上有什麼不同?
擴充套件事件更高效,對伺服器影響較小。
10.有下面一個表:CREATE TABLE T(ID Int identity(1,1),aqty int,bqty int)
大概資料如下:
1 1 2
2 2 3
3 2 1
4 3 5
....
假設資料有幾百萬,現在有個語句很慢:
SELECT ID
FROM T
WHERE aqty>bqty
列上已經有索引,你能想到root cause是什麼?你會怎麼優化?
兩個列進行比較, 原來的索引起不了作用。
優化:增加計算列,並在計算列上加索引。
alter table T add compare AS case when aqty>bqty then 1 when aqty=bqty then 0 else -1 end
11.你覺得為什麼跨伺服器多表關聯查詢時“可能”效能很差?你能想到哪些可以提升跨伺服器查詢時效能低下的方法?
一是網路傳輸影響, 二是執行計劃不準確。
優化:不大的表, 先傳過來再進行查詢。或者只取需要的資料傳過來再查詢。
12.如何清空有外來鍵的表的資料?
先禁用外來鍵依賴,再truncate table
13.LDF暴增怎麼辦?你先查哪個DMV?
先備份、收縮日誌。sys.dm_db_log_space_usage
14.如果某個JOB的所有者是sa,能不能禁用sa?
可以。 這一步在 sqlserver2014上親自試驗過了。
15.SSMS修改一個表的一列的資料型別 ,與用T-SQL實現ALTER TABLE 的底層實現區別在哪?
ssms在圖形介面直接修改列型別, 會重新建立表再將資料插入, 而語句則不會。
16.UNION 和UNION ALL從效能上的區別是什麼?
union 有去重的消耗, 而 union all 沒有。
17.初始安裝SQL Server 2008及其以上版本時,SQL Server預設是什麼啟動賬號?
network service
18.不在域中的兩臺伺服器做資料庫映象,與在域環境相比,必不可少的一個操作是什麼?
設定host檔案。
19.事務複製對錶最起碼有哪個硬性要求?
表必須有主鍵!
DECLARE @demo VARCHAR
SET @demo = '你猜猜會怎樣?'
SELECT @demo
一片空白, 因為 varchar 不指定長度, 預設長度為1個位元組
21. 怎麼優化這段程式碼?
USE AdventureWorks2014 --AdventureWorks均可不一定是2014
GO
DECLARE @date DATE = '2013-09-30'
SELECT SalesOrderID,
SalesOrderDetailID,
ModifiedDate
FROM Sales.SalesOrderDetail
WHERE CONVERT(VARCHAR(20), ModifiedDate, 23) = CONVERT(VARCHAR(20), @date, 23)
不應該在where 左邊使用表示式。改為:WHERE ModifiedDate= CONVERT(datetime, @date)
22.十萬左右的資料要作為臨時資料,你用臨時表還是表變數?大概說說理由。
用臨時表, 而不是表變數。因為臨時表可以用索引, 可以使用統計資訊來優化。
入職後大概工作:
1. 完成大概5~8份文件,所以你需要有一定的文件編寫水平。
2. 協助我完成資料庫原始碼管控任務。
3. 逐步接手目前為止8臺伺服器大概60個資料庫,目前只用了事務複製(這個最重要,因為我今年7月要休陪產假,你接不起常規管理到時就搞死我)
常規管理包含但可能不僅限於:
1. 備份還原
2. 處理複製問題(不會的找X東大牛)
3. 初中級T-SQL優化
4. 資料庫日常監控
4. 一年之內逐步讀完這些書,不好意思,我沒有中文版,也不會翻譯好然後給你讀
《Training Kit (Exam 70-461)》
《Training Kit (Exam 70-462)》
《Microsoft SQL Server 2008 Internals》
《microsoft_sql_server_2012_security_cookbook》
《Syngress.Securing.SQL.Server.Feb.2011》
《Troubleshooting Performance Problems in SQL Server 2008》
5. 協助我實現SQL Server運維自動化,但是目前我還沒有想法,只知道要做。
6. 能滿足的以後還有機會做你想做的事情。
相關文章
- 那些年我們一起踩過的Dubbo坑
- 那些年使用Hive踩過的坑Hive
- uniapp之那些年踩過的坑APP
- C++之那些年踩過的坑C++
- 我在秋招中踩過的那些坑|掘金技術徵文
- 當年用httpclient時踩過的那些坑HTTPclient
- IT人,那些年,一起踩過的坑
- 與webview打交道中踩過的那些坑WebView
- 那些年,在nodejs上踩過的坑NodeJS
- 那些年提交 AppStore 稽核踩過的坑APP
- GeoServer 踩過的坑Server
- 講課這些天(二):那些年踩過的坑
- Vue2.0配置mint-ui踩過的那些坑VueUI
- 關於最近開發小程式中踩過的那些坑
- Go 開發踩過的那些坑(適合Java轉Go)GoJava
- IT行業那些你不想聽到的話,我都聽過了行業
- 小程式開發,那些我們跳過的坑
- 騰訊 iOS 三面-這是我踩過的坑!iOS
- 你踩過flutter的坑嗎Flutter
- JasperReport 中踩過的坑
- 解析資料踩過的坑
- VUE 使用中踩過的坑Vue
- 親自踩過的vue的坑Vue
- 校招那些坑,是我走過最長的路
- 那些年你踩過的坑,都在這裡了~| 掘金技術徵文
- 安裝 Laravel/horizon 踩過的坑Laravel
- wepy小程式踩過的坑(1)
- 那些年,我們一起走過的iOS推送的坑iOS
- 使用 Markdown 寫技術部落格,我踩過的 6個坑
- vue專案中踩過的element的坑Vue
- Redis 叢集部署及踩過的坑Redis
- 除錯py程式碼踩過的坑除錯
- 談談出入React框架踩過的坑React框架
- Vue2.0構建——踩過的坑Vue
- 淺談重構中踩過的坑
- Compose 延遲列表踩過的坑
- 踩過的坑(一)——web容器升級Web
- jQuery升級踩的那些坑jQuery