java開發學生管理系統,看這篇足矣了!

20道常見MySQL數據庫面試題+解析

  1. 事務四大特性(ACID)原子性、一致性、隔離性、持久性?

  2. 事務的并發?事務隔離級別,每個級別會引發什么問題,MySQL默認是哪個級別?

  3. MySQL常見的三種存儲引擎(InnoDB、MyISAM、MEMORY)的區別?

  4. MySQL的MyISAM與InnoDB兩種存儲引擎在,事務、鎖級別,各自的適用場景?

  5. 查詢語句不同元素(where、jion、limit、group by、having等等)執行先后順序?

  6. 什么是臨時表,臨時表什么時候刪除?

  7. MySQL B+Tree索引和Hash索引的區別?

  8. sql查詢語句確定創建哪種類型的索引?如何優化查詢?

  9. 聚集索引和非聚集索引區別?

  10. 有哪些鎖(樂觀鎖悲觀鎖),select 時怎么加排它鎖?

  11. 非關系型數據庫和關系型數據庫區別,優勢比較?

  12. 數據庫三范式,根據某個場景設計數據表?

  13. 數據庫的讀寫分離、主從復制,主從復制分析的 7 個問題?

  14. 使用explain優化sql和索引?

  15. MySQL慢查詢怎么解決?

  16. 什么是 內連接、外連接、交叉連接、笛卡爾積等?

  17. mysql都有什么鎖,死鎖判定原理和具體場景,死鎖怎么解決?

  18. varchar和char的使用場景?

  19. mysql 高并發環境解決方案?

  20. 數據庫崩潰時事務的恢復機制(REDO日志和UNDO日志)?

1、事務四大特性(ACID)原子性、一致性、隔離性、持久性?

原子性(Atomicity)

  • 原子性是指事務包含的所有操作要么全部成功,要么全部失敗回滾,因此事務的操作如果成功就必須要完全應用到數據庫,如果操作失敗則不能對數據庫有任何影響。

一致性(Consistency)

  • 事務開始前和結束后,數據庫的完整性約束沒有被破壞。比如A向B轉賬,不可能A扣了錢,B卻沒收到

隔離性(Isolation)

  • 隔離性是當多個用戶并發訪問數據庫時,比如操作同一張表時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作所干擾,多個并發事務之間要相互隔離

同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結束前,B不能向這張卡轉賬。

關于事務的隔離性數據庫提供了多種隔離級別,稍后會介紹到持久性(Durability)

  • 持久性是指一個事務一旦被提交了,那么對數據庫中的數據的改變就是永久性的,即便是在數據庫系統遇到故障的情況下也不會丟失提交事務的操作

2、事務的并發?事務隔離級別,每個級別會引發什么問題,MySQL默認是哪個級別?

從理論上來說, 事務應該彼此完全隔離, 以避免并發事務所導致的問題,然而, 那樣會對性能產生極大的影響, 因為事務必須按順序運行, 在實際開發中, 為了提升性能, 事務會以較低的隔離級別運行, 事務的隔離級別可以通過隔離事務屬性指定

2.1事務的并發問題

(1)臟讀:事務A讀取了事務B更新的數據,然后B回滾操作,那么A讀取到的數據是臟數據

(2)不可重復讀:事務 A 多次讀取同一數據,事務 B 在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果因此本事務先后兩次讀到的數據結果會不一致。

(3)幻讀:幻讀解決了不重復讀,保證了同一個事務里,查詢的結果都是事務開始時的狀態(一致性)。

例如:事務T1對一個表中所有的行的某個數據項做了從“1”修改為“2”的操作 這時事務T2又對這個表中插入了一行數據項,而這個數據項的數值還是為“1”并且提交給數據庫。 而操作事務T1的用戶如果再查看剛剛修改的數據,會發現還有跟沒有修改一樣,其實這行是從事務T2中添加的,就好像產生幻覺一樣,這就是發生了幻讀。

小結:不可重復讀的和幻讀很容易混淆,不可重復讀側重于修改,幻讀側重于新增或刪除。解決不可重復讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表。

2.2事務的隔離級別

事務隔離級別

image

  • 讀未提交:另一個事務修改了數據,但尚未提交,而本事務中的SELECT會讀到這些未被提交的數據臟讀

  • 不可重復讀:事務 A 多次讀取同一數據,事務 B 在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果因此本事務先后兩次讀到的數據結果會不一致。

  • 可重復讀:在同一個事務里,SELECT的結果是事務開始時時間點的狀態,因此,同樣的SELECT操作讀到的結果會是一致的。但是,會有幻讀現象

  • 串行化:最高的隔離級別,在這個隔離級別下,不會產生任何異常。并發的事務,就像事務是在一個個按照順序執行一樣

2.3 MySQL默認的事務隔離級別為repeatable-read

  • MySQL 支持 4 中事務隔離級別.

  • 事務的隔離級別要得到底層數據庫引擎的支持, 而不是應用程序或者框架的支持.

  • Oracle 支持的 2 種事務隔離級別:READ_COMMITED , SERIALIZABLE

2.3補充

  1. SQL規范所規定的標準,不同的數據庫具體的實現可能會有些差異

  2. MySQL中默認事務隔離級別是“可重復讀”時并不會鎖住讀取到的行

  • 事務隔離級別未提交讀時,寫數據只會鎖住相應的行。

  • 事務隔離級別為可重復讀時,寫數據會鎖住整張表。

  • 事務隔離級別為串行化時,讀寫數據都會鎖住整張表。

隔離級別越高越能保證數據的完整性和一致性,但是對并發性能的影響也越大,魚和熊掌不可兼得啊。對于多數應用程序,可以優先考慮把數據庫系統的隔離級別設為Read Committed,它能夠避免臟讀取,而且具有較好的并發性能。盡管它會導致不可重復讀、幻讀這些并發問題,在可能出現這類問題的個別場合,可以由應用程序采用悲觀鎖或樂觀鎖來控制。

image.png

21條MySQL性能調優經驗

  1. 為查詢緩存優化你的查詢

  2. EXPLAIN你的SELECT查詢

  3. 當只要一行數據時使用LIMIT 1

  4. 為搜索字段建索引

  5. 在Join表的時候使用相當類型的例,并將其索引

  6. 千萬不要 ORDER BY RAND()

  7. 避免 SELECT *

  8. 永遠為每張表設置一個 ID

  9. 使用 ENUM 而不是 VARCHAR

  10. 從 PROCEDURE ANALYSE() 取得建議

  11. 盡可能的使用 NOT NULL

  12. Prepared Statements

  13. 無緩沖的查詢

  14. 把 IP 地址存成 UNSIGNED INT

  15. 固定長度的表會更快

  16. 垂直分割

  17. 拆分大的 DELETE 或 INSERT 語句

  18. 越小的列會越快

  19. 選擇正確的存儲引擎

  20. 使用一個對象關系映射器(Object Relational Mapper)

  21. 小心“永久鏈接”

image

最后

由于文案過于長,在此就不一一介紹了,這份Java后端架構進階筆記內容包括:Java集合,JVM、Java并發、微服務、SpringNetty與 RPC 、網絡、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基礎、負載均衡、數據庫、一致性算法、Java算法、數據結構、分布式緩存等等知識詳解。

image

本知識體系適合于所有Java程序員學習,關于以上目錄中的知識點都有詳細的講解及介紹,掌握該知識點的所有內容對你會有一個質的提升,其中也總結了很多面試過程中遇到的題目以及有對應的視頻解析總結。
有需要的朋友可以點擊這里免費獲取

image

解及介紹,掌握該知識點的所有內容對你會有一個質的提升,其中也總結了很多面試過程中遇到的題目以及有對應的視頻解析總結。
有需要的朋友可以點擊這里免費獲取

[外鏈圖片轉存中…(img-Xdq7adtn-1624947168944)]

image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385828.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385828.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

oracle頻,Oracle動作頻頻 Java或浴火重生

【51CTO觀察】自從今年(2010)的1月27日Oracle正式宣布完成并購Sun以來,Java的前途和命運一直是眾多Java開發者的所關心的話題。4月9日,被稱為Java之父的James Gosling又在個人博客上宣布離開Oracle,這一事件更為Java的前景增加了一層迷霧。但…

java開發實戰經典第二版百度網盤,靈魂拷問

一面(一個小時左右) 算法:寫冒泡排序,問如何優化,簡單講了快排和堆排序的原理數據庫:解釋左連接數據庫第一第二第三范式,數據庫死鎖linux:怎么查看內存;怎么查看進程&am…

php用戶之間的數據,什么是位于用戶與操作系統之間的一層數據管理軟件

什么是位于用戶與操作系統之間的一層數據管理軟件?DBMS是位于用戶與操作系統之間的一層數據管理軟件。數據庫管理系統(Database Management System)是一種操縱和管理數據庫的大型軟件,用于建立、使用和維護數據庫,簡稱DBMS。它對數據庫進行統…

java開發實戰經典答案百度云,含面試題+答案

1、上下文切換 上下文定義 cpu發生進程或者線程切換時,所依賴的數據集合,比如一個函數有外部變量,函數運行時,必須獲取外部變量,這些變量值的集合就是上下文。 引發問題 對于CPU密集型任務,多線程處理會…

redius和oracle怎么配置,求個 交換機radius 詳細配置案例

配置采用RADIUS協議進行認證和計費示例組網需求如圖1所示,用戶通過SwitchA訪問網絡,用戶同處于huawei域。SwitchB作為目的網絡接入服務器。用戶首先需要穿越SwitchA和SwitchB所在的網絡,然后通過服務器的遠端認證才能通過SwitchB訪問目的網絡…

java開發小程序好嗎,看完必懂

1關于MySQL,面試官會問哪些問題? 第一個:MySQ性能優化最佳實踐21個(有具體的解釋)你知道哪些? 為查詢緩存優化你的查詢 EXPLAIN你的SELECT查詢 當只要一行數據時使用LIMIT 1 為搜索字段建索引 在Join表…

linux拉取指定時間內,Linux 日期和時間操作詳解

Linux將時鐘分為系統時鐘(System Clock)和硬件(Real Time Clock,簡稱RTC)時鐘兩種。系統時間是指當前Linux Kernel中的時鐘,而硬件時鐘則是主板上由電池供電的那個主板硬件時鐘,當Linux啟動時,硬件時鐘會去讀取系統時鐘的設置,然后…

java開發屬于后端嗎,值得一讀!

1. 垃圾回收機制 Stop-the-World:   JVM由于要執行GC而停止了應用程序的執行稱之為Stop-the-World,該情形會在任何一種GC算法中發生。當Stop-the-world發生時,除了GC所需的線程以外,所有線程都處于等待狀態直到GC任務完成。事實…

linux 創建精靈進程,linux 進程通信之 守護進程

守護進程(Daemon)Daemon(精靈)進程,是linux中的后臺服務進程,通常獨立于控制終端并且周期性地執行某種任務或等待處理某些發生的時間。一般采用以d結尾的名字。從下面的進程信息可以看出,守護進程都是【?】。colord 1160 0.0 0.2 …

java開發崗位招聘,吊打面試官

一.java基礎面試知識點 java中和equals和hashCode的區別 int、char、long各占多少字節數 int與integer的區別 探探對java多態的理解 String、StringBuffer、StringBuilder區別 什么是內部類?內部類的作用 抽象類和接口區別 抽象類的意義 抽象類與接口的應用…

linux 調用默認程序打開文件,Excel VBA如何使用默認應用程序打開文件

我無法評論現有答案(分數不足),因此我在回答以添加信息。從Access 2010開始,我遇到了以下語法的無提示故障:Dim URL As StringURL "http://foo.com/"CreateObject("Shell.Application").Open URL如果用URL括號括起來&am…

java開發工作找不到要放棄嗎,年薪50W

1. Redis面試專題 絕大部分寫業務的程序員,在實際開發中使用 Redis 的時候,只會 Set Value 和 Get Value 兩個操作,對 Redis 整體缺乏一個認知。這里以面試題的形式對 Redis 常見問題做一個總結,解決大家的知識盲點。 什么是Red…

linux 函數手冊 在線,Linux系統API函數手冊

Linux系統API函數手冊 (34頁)本資源提供全文預覽,點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧,查找使用更方便哦!11.90 積分(一)文件操作篇 1、creat(建立文件)頭文件1 #include2 #include3 #include定義函數1 int creat(const char * pa…

java開發工具包的英文縮寫,程序員翻身之路

基本概念面試題集( Spring 相關概念梳理) 談談對Spring loC的理解?談談對Spring Dl的理解?BeanFactory 接口和ApplicationContext接口不同點是什么?請介紹你熟悉的Spring 核心類,并說明有什么作用?介紹一下Spring的事務的了解?介紹—下…

linux 磁盤管理3板斧,Linux磁盤管理三板斧的使用心得

磁盤是Linux系統中一項非常重要的資源,如何對其進行有效的管理直接關系到整個系統的性能問題。對Linux磁盤管理稍微有一 些學習和經驗的朋友們應該都知道df、du和fdisk這三個常用命令:df用于檢查文件系統磁盤占用情況,du檢查磁盤空間占用情況…

java開發工程師學什么專業,Java核心知識點

應聘求職 每年這個時候,都是應屆生求職以及在職人員跳槽的高峰期。對于即將成為程序員的應屆畢業生們。在求職過程中怎樣確定目標公司和目標職位,大家在求職過程中要注意哪些細節?這些都是大家所關心的話題。 ①應聘渠道: ⑴學校招聘會&a…

linux查看服務器電源風扇,nagios監控vsphere ESXi主機硬件狀態(CPU風扇、電源模塊、硬盤、溫度)...

nagios監控vsphere ESXi主機硬件狀態(CPU風扇、電源模塊、硬盤、溫度)esxi 的只讀賬戶和密碼(本文以chkhardware/chkreadonly為例)插架下載地址,此地址附有相關說明:http://www.claudiokuenzler.com/nagios-plugins/check_esxi_hardware.phpESXI主機:DELL R410ESXI版本:ESXI4.0…

java開發工程師招聘軟件,面試題附答案

螞蟻金服一面(技術面) JVM 內存分哪幾個區,每個區的作用是什么?JVM有哪些回收算法,對應的收集器有哪些? GC 的兩種判定方法 ?CMS 收集器與 G1 收集器的特點。 hashmap源碼問題 HashMap、HashMap如何保…

java高分面試指南:redis怎么保證高可用

緩存雪崩 緩存雪崩指的是Redis當中的大量緩存在同一時間全部失效,而假如恰巧這一段時間同時又有大量請求被發起,那么就會造成請求直接訪問到數據庫,可能會把數據庫沖垮。 緩存雪崩一般形容的是緩存中沒有而數據庫中有的數據,而因…

linux文件系統只有幾k,關于Linux文件系統的的簡單理解和認識

關于Linux文件系統的的簡單理解和認識關于文件系統的運作,這與操作系統帶的檔案數據有關。例如Linux操作系統的檔案權限(rwx)與文件屬性(擁有者,群組,時間參數等)。文件系統通常會將這兩部分的數據分別存放在不同的區塊,權限與屬性…