2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試真題及答案_第1頁
2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試真題及答案_第2頁
2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試真題及答案_第3頁
2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試真題及答案_第4頁
2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試真題及答案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

2025年軟考上半年數(shù)據(jù)庫系統(tǒng)工程師考試練習(xí)題及答案1.單項選擇題(每題1分,共20分。每題只有一個正確答案)1.1在關(guān)系數(shù)據(jù)庫中,若關(guān)系模式R(A,B,C)滿足函數(shù)依賴集F={A→B,B→C},則R的候選碼為A.A??B.B??C.C??D.AB答案:A1.2下列關(guān)于事務(wù)隔離級別的說法,正確的是A.讀未提交允許臟讀但不允許不可重復(fù)讀B.讀已提交允許不可重復(fù)讀但不允許幻讀C.可重復(fù)讀允許幻讀但不允許臟讀D.串行化既不允許臟讀也不允許不可重復(fù)讀,但允許幻讀答案:C1.3在MySQL8.0中,默認(rèn)的存儲引擎是A.MyISAM??B.InnoDB??C.MEMORY??D.ARCHIVE答案:B1.4給定關(guān)系R(A,B)和S(B,C),執(zhí)行R÷S后得到的關(guān)系屬性為A.A??B.B??C.C??D.A,C答案:A1.5在分布式數(shù)據(jù)庫的兩階段提交協(xié)議中,若協(xié)調(diào)者在“預(yù)提交”階段后崩潰,參與者應(yīng)A.立即提交??B.立即回滾??C.進(jìn)入阻塞等待??D.向其它參與者投票答案:C1.6下列索引結(jié)構(gòu)中,最適合范圍查詢的是A.Hash索引??B.Bitmap索引??C.B+樹索引??D.倒排索引答案:C1.7在Oracle中,用于實現(xiàn)行級鎖的語句是A.LOCKTABLE…INEXCLUSIVEMODE??B.SELECT…FORUPDATEC.SELECT…WITHREADONLY??D.SETTRANSACTIONREADONLY答案:B1.8若關(guān)系模式R(A,B,C,D)的函數(shù)依賴集F={AB→C,C→D,D→A},則R的閉包(AB)+為A.{A,B}??B.{A,B,C}??C.{A,B,C,D}??D.{A,B,D}答案:C1.9在數(shù)據(jù)庫恢復(fù)過程中,先寫日志后寫數(shù)據(jù)庫的原則稱為A.WAL??B.ForceLog??C.Checkpoint??D.Redo/Undo答案:A1.10在PostgreSQL中,用于查看當(dāng)前活躍連接數(shù)的系統(tǒng)視圖是A.pg_stat_activity??B.pg_locks??C.pg_class??D.pg_database答案:A1.11下列關(guān)于視圖的說法,錯誤的是A.視圖可以基于多個表創(chuàng)建??B.視圖可以更新基表數(shù)據(jù)C.視圖可以建立索引??D.視圖可以嵌套定義答案:C1.12在關(guān)系代數(shù)中,σ條件(R×S)等價于A.R?S??B.R∪S??C.R∩S??D.R÷S答案:A1.13若事務(wù)T1對數(shù)據(jù)A加共享鎖,事務(wù)T2對數(shù)據(jù)AA.只能加排他鎖??B.只能加共享鎖??C.不能加任何鎖??D.可以加共享鎖或排他鎖答案:B1.14在SQLServer中,啟用行版本隔離級別的命令是A.SETTRANSACTIONISOLATIONLEVELSNAPSHOTB.SETALLOW_SNAPSHOT_ISOLATIONONC.ALTERDATABASE…SETREAD_COMMITTED_SNAPSHOTOND.DBCCUSEROPTIONS答案:C1.15下列關(guān)于數(shù)據(jù)倉庫ETL的說法,正確的是A.ETL只發(fā)生在數(shù)據(jù)倉庫初建階段??B.抽取過程必須阻塞源系統(tǒng)C.轉(zhuǎn)換過程必須落地中間文件??D.加載過程可采用批量或流式答案:D1.16在MongoDB中,實現(xiàn)多鍵索引的字段類型必須是A.字符串??B.整型??C.數(shù)組??D.日期答案:C1.17若關(guān)系R有10個元組,關(guān)系S有20個元組,則R×S的元組數(shù)為A.10??B.20??C.30??D.200答案:D1.18在數(shù)據(jù)庫安全模型中,MAC表示A.自主訪問控制??B.強(qiáng)制訪問控制??C.基于角色訪問控制??D.基于屬性訪問控制答案:B1.19下列關(guān)于Redis持久化的說法,正確的是A.RDB方式默認(rèn)每秒同步一次??B.AOF方式以二進(jìn)制格式保存C.可同時啟用RDB與AOF??D.AOF重寫會阻塞所有讀寫答案:C1.20在分布式數(shù)據(jù)庫CAP理論中,分區(qū)容錯性縮寫為A.C??B.A??C.P??D.T答案:C2.多項選擇題(每題2分,共10分。每題至少有兩個正確答案,多選、少選、錯選均不得分)2.1下列哪些操作會觸發(fā)MySQLInnoDB的意向鎖A.SELECT…LOCKINSHAREMODE??B.SELECT…FORUPDATEC.UPDATE…WHERE??D.INSERT…VALUES答案:ABC2.2關(guān)于第三范式(3NF)的判定,下列說法正確的是A.不存在非主屬性對候選碼的部分依賴??B.不存在非主屬性對候選碼的傳遞依賴C.允許主屬性對候選碼的部分依賴??D.允許主屬性對候選碼的傳遞依賴答案:BCD2.3在Oracle中,下列哪些后臺進(jìn)程與實例恢復(fù)有關(guān)A.DBWn??B.LGWR??C.SMON??D.PMON答案:BC2.4下列哪些SQL語句會隱式提交當(dāng)前事務(wù)A.CREATETABLE??B.GRANT??C.TRUNCATETABLE??D.SELECTFORUPDATE答案:ABC2.5在PostgreSQL中,下列哪些技術(shù)可實現(xiàn)水平分片A.pg_shard??B.citus??C.plproxy??D.postgres_fdw答案:ABC3.填空題(每空2分,共20分)3.1在關(guān)系模式R(U,F)中,若X→Y且Y→Z,則根據(jù)Armstrong公理可推出________,該規(guī)則稱為________律。答案:X→Z,傳遞3.2在MySQL中,查看InnoDB引擎狀態(tài)的命令是SHOW________。答案:ENGINEINNODBSTATUS3.3若事務(wù)的隔離級別為________,則可能出現(xiàn)丟失更新。答案:讀未提交3.4在分布式數(shù)據(jù)庫中,采用________時鐘算法可解決分布式事務(wù)的全局時序問題。答案:向量3.5在SQLServer中,系統(tǒng)數(shù)據(jù)庫________用于存儲臨時對象。答案:tempdb3.6在MongoDB中,________命令用于查看查詢執(zhí)行計劃。答案:explain()3.7在數(shù)據(jù)倉庫中,________模型由維度表和事實表組成。答案:星型3.8在Oracle中,________文件記錄所有對數(shù)據(jù)庫的更改,用于恢復(fù)。答案:重做日志3.9在Redis中,________數(shù)據(jù)結(jié)構(gòu)可用于實現(xiàn)消息隊列的阻塞彈出。答案:list3.10在PostgreSQL中,________鎖模式與MySQL的元數(shù)據(jù)鎖功能類似。答案:AccessShare4.判斷題(每題1分,共10分。正確打“√”,錯誤打“×”)4.1在關(guān)系數(shù)據(jù)庫中,外鍵列必須創(chuàng)建索引。答案:×4.2在MySQL中,InnoDB的聚簇索引葉子節(jié)點(diǎn)存儲整行數(shù)據(jù)。答案:√4.3在Oracle中,表空間可以跨多個數(shù)據(jù)庫實例共享。答案:×4.4在分布式系統(tǒng)中,BASE理論強(qiáng)調(diào)最終一致性。答案:√4.5在SQL標(biāo)準(zhǔn)中,F(xiàn)ULLOUTERJOIN可以用LEFT和RIGHTJOIN聯(lián)合模擬。答案:√4.6在MongoDB中,分片鍵一旦指定便不可修改。答案:√4.7在PostgreSQL中,VACUUM操作會阻塞SELECT語句。答案:×4.8在Redis中,String類型最大可存儲512MB數(shù)據(jù)。答案:√4.9在數(shù)據(jù)倉庫中,雪花模型比星型模型查詢性能更高。答案:×4.10在MySQL中,GROUPBY子句中的列必須出現(xiàn)在SELECT列表中。答案:×5.簡答題(共5題,每題6分,共30分)5.1封閉型簡述數(shù)據(jù)庫事務(wù)的ACID特性,并說明隔離級別如何影響一致性。答案:原子性要求事務(wù)全做或全不做;一致性要求事務(wù)執(zhí)行前后數(shù)據(jù)庫處于一致狀態(tài);隔離性要求并發(fā)事務(wù)互不干擾;持久性要求提交后結(jié)果永久保存。隔離級別越低,一致性越弱,如讀未提交允許臟讀,可能破壞一致性;串行化通過鎖協(xié)議保證最強(qiáng)一致性。5.2開放型某電商系統(tǒng)訂單表每天新增千萬級數(shù)據(jù),請給出分區(qū)策略并說明優(yōu)缺點(diǎn)。答案:可按訂單創(chuàng)建時間做范圍分區(qū),每月一個分區(qū);優(yōu)點(diǎn):便于批量刪除歷史分區(qū),查詢可分區(qū)裁剪;缺點(diǎn):熱點(diǎn)集中在最新分區(qū),可再按用戶ID做哈希子分區(qū),打散熱點(diǎn),但增加跨分區(qū)查詢復(fù)雜度。5.3封閉型說明B+樹與B樹的三點(diǎn)區(qū)別,并指出為何B+樹更適合數(shù)據(jù)庫索引。答案:1.B+樹非葉子節(jié)點(diǎn)不存數(shù)據(jù),扇出更高;2.B+樹葉子節(jié)點(diǎn)鏈表連接,范圍掃描高效;3.B+樹所有數(shù)據(jù)在葉子,查詢路徑等長。數(shù)據(jù)庫需要大量范圍掃描和順序訪問,B+樹葉子鏈表減少磁盤I/O。5.4開放型某系統(tǒng)出現(xiàn)“ORA01555:snapshottooold”,請給出排查步驟與解決措施。答案:1.查看UNDO表空間使用率;2.檢查UNDO_RETENTION參數(shù)是否過低;3.確認(rèn)長查詢SQL執(zhí)行計劃;4.增大UNDO表空間或調(diào)整RETENTIONGUARANTEE;5.優(yōu)化長查詢減少運(yùn)行時間;6.避免高峰批量刪除歷史UNDO。5.5封閉型寫出將關(guān)系模式R(A,B,C,D,E)分解為BCNF的算法步驟,并給出無損連接與依賴保持的判定方法。答案:1.找出候選碼;2.對非平凡函數(shù)依賴X→Y,若X非超碼,則分解為R1(XY)與R2(R?Y);3.遞歸檢查子模式;4.無損連接:若分解后自然連接等于原關(guān)系,則滿足;5.依賴保持:若分解后FD集在子模式投影后邏輯蘊(yùn)含原FD集,則保持。6.應(yīng)用題(共4題,共70分)6.1計算類(15分)已知關(guān)系R(A,B)有1000頁,每頁可存50行;S(B,C)有2000頁,每頁可存40行;內(nèi)存緩沖幀為12頁。采用塊嵌套循環(huán)連接,求最小I/O次數(shù)并給出計算過程。答案:R為外表,塊大小=10頁,需?1000/10?=100次掃描R塊;每塊R需掃描S一次,2000頁,共100×2000=200000次I/O;總I/O=1000+200000=201000次。6.2分析類(20分)某系統(tǒng)使用MySQL8.0,主從復(fù)制架構(gòu),業(yè)務(wù)高峰出現(xiàn)從庫延遲10秒。請分析可能原因并給出至少四種優(yōu)化方案。答案:原因:1.單線程SQL線程瓶頸;2.大事務(wù)更新;3.從庫硬件差;4.無索引導(dǎo)致回放慢。優(yōu)化:1.開啟slave_parallel_type=LOGICAL_CLOCK,調(diào)大parallel_workers;2.拆分大事務(wù)為批量小事務(wù);3.升級從庫SSD與CPU;4.回放表加索引,避免全表掃描;5.使用binlog_row_image=MINIMAL減少日志量;6.引入半同步復(fù)制,降低延遲感知。6.3綜合設(shè)計類(20分)設(shè)計一個高并發(fā)短鏈接系統(tǒng),要求:1.支持每秒10萬并發(fā)寫入;2.支持毫秒級長鏈接跳轉(zhuǎn);3.數(shù)據(jù)需保存5年。請給出:a)表結(jié)構(gòu);b)分庫分表策略;c)緩存方案;d)過期數(shù)據(jù)清理策略。答案:a)表:short_url(char(7)PK),long_url(varchar(2000)),create_time,expire_time,checksum);b)按short_url首字母分16庫,每庫64表,共1024表,預(yù)估5年數(shù)據(jù)量900億行,每表約9000萬行;c)Redis緩存熱數(shù)據(jù),采用String結(jié)構(gòu),key=短鏈,value=長鏈,設(shè)置TTL=7天,使用RedisCluster分片;d)每日凌晨批量掃描expire_time<now()的分區(qū),按分區(qū)刪除,使用邏輯過期+異步清理,避免大刪除鎖表。6.4編程與調(diào)優(yōu)類(15分)給出以下慢SQL:SELECTo.order_id,FROMordersoJOINuseruONo.user_id=u.user_idWHEREo.create_timeBETWEEN'20250101'AND'20250131'ORDERBYo.order_idDESCLIMIT100000,20;執(zhí)行時間3.8秒,Explain顯示全表掃描orders。請重寫SQL并給出索引優(yōu)化方案,目標(biāo)將耗時降至100毫秒以內(nèi)。答案:1.創(chuàng)建聯(lián)合索引idx_ct_oid(create_time,order_idDESC);2.改寫SQL利用覆蓋索引與子查詢:SELECTo.order_id,FROM(SELECTorder_id,user_id???FROMorders???WHEREcreate_timeBETWEEN'20250101'AND'20250131'???ORDERBYorder_idDESC???LIMIT100000,20)AStJOINuseruONt.user_id=u.user_id;3.對user.user_id建立主鍵;4.開啟MySQL8.0的索引下推與MRR;5.實測耗時降至85毫秒。7.綜合案例分析(共1題,20分)背景:某金融核心賬戶表account(acc_no,balance,last_txn_id,version),采用樂觀鎖version字段,高并發(fā)扣款場景出現(xiàn)大量更新失敗與重試,導(dǎo)致TPS下降70%。問題:1.解釋高并發(fā)下樂觀鎖失效原因;2.給出至少兩種改進(jìn)方案并對比優(yōu)缺點(diǎn);3.說明如何保證余額不透支;4.給出監(jiān)控指標(biāo)與告警閾值。答案:1.原因:大量并發(fā)線程讀取同一version,提交時version已變,導(dǎo)致更新失敗,重試風(fēng)暴。2.方案A:悲觀鎖SELECT…FORUPDATE,優(yōu)點(diǎn):簡單,強(qiáng)一致;缺點(diǎn):并發(fā)下降,死鎖風(fēng)險。方案B:拆分子賬戶+隊列緩沖,將熱點(diǎn)賬戶拆為100個子賬戶,扣款請求先入Kafka,按acc_no%100分區(qū),單線程消費(fèi),順序更新子賬戶,匯總余額;優(yōu)點(diǎn):并發(fā)高,無鎖;缺點(diǎn):實現(xiàn)復(fù)雜,余額實時性降低100毫秒。3.在UPDATE語句加WHEREbalance>=amount

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論