題目是黃釗吉大牛出的, 答案的自己寫的。
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.事務複製對錶最起碼有哪個硬性要求?
表必須有主鍵!
20.你能不能猜到什麼結果?為什麼?
declare @demo varchar
set @demo = '你猜猜會怎樣?'
select @demo
一片空白, 因為 varchar 不指定長度, 預設長度為1個位元組
21. 怎麼優化這段**?
use adventureworks2014 --adventureworks均可不一定是2014
godeclare @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. 能滿足的以後還有機會做你想做的事情。
那些天我踩過的坑
使用knockoutjs時候,千萬不要在迴圈繫結中把dom元素的id寫死。例如在 input file 中 banging event change 時,千萬不要在ko.observablearray 中固定id屬性。如下所示 label for up img class am btn am btn...
那些年我踩過的坑(持續更新)
今天突然想到可以把開發中遇到過的問題記錄下來,以防日後再犯 python中新式類和舊式類在多繼承的時候,查詢要呼叫的方法 從左到右 新式類是廣度優先的查詢演算法。舊式類的查詢方法是深度優先的。type是元類,是建立類物件的類 使用mongoengine定義個field為primary key時,mo...
微信群發,那些我踩過的坑
開發環境 框架使用tp3.2.3,php版本 5.6 1.獲取access token 建議這個函式寫在公共方法或其他公共類中,方便呼叫 function getaccesstoken s access token result access token result expires in retu...