罷工助手在哪
703
2022-05-30
1、平時Mysql主要用哪個版本
2、數據庫三大范式是什么
3、MySQL有關權限的表都有哪幾個
4、MySQL的binlog有有幾種錄入格式?分別有什么區別?
5、平時用到哪些關系型數據庫和非關系數據庫, 可以談談你對它們的理解嗎?
6、可以簡單說說你對MySQL的邏輯架構了解嗎?
7、了解MySQL中的MVCC是什么?
8、PostgreSQL相對于MySQL的優勢
9、PostgreSQL和MySQL的一些區別
出現概率: ★★★★
可以說說自己用的MySQL版本, 比如我自己用的版本是5.7版本,然后可以也簡單聊聊這個版本的一些特點:
1)、安全性
在MySQL 5.7中,有不少安全性相關的改進。包括:
MySQL數據庫初始化完成以后,會產生一個 root@localhost 用戶,從MySQL 5.7開始,root用戶的密碼不再是空,而是隨機產生一個密碼,這也導致了用戶安裝5.7時發現的與5.6版本比較大的一個不同點。
MySQL官方已經刪除了test數據庫,默認安裝完后是沒有test數據庫的,就算用戶創建了test庫,也可以對test庫進行權限控制了
MySQL 5.7版本提供了更為簡單SSL安全訪問配置,并且默認連接就采用SSL的加密方式。
可以為用戶設置密碼過期策略,一定時間以后,強制用戶修改密碼。
2)、靈活性
MySQL 5.7的兩個全新的功能,即JSON和generate column
CREATE TABLE t1 (jdoc JSON); INSERT INTO t1 VALUES('{"key1": "value1", "key2": "value2"}');
3)、可用性
在線設置復制的過濾規則,不再需要重啟MySQL,只需要停止SQL thread,修改完成以后,啟動SQL thread
這個主要大致談談你自己的理解, 也可以根據自己的理解多延展一些, 提高面試的加分。
出現概率: ★★★
第一范式:每個列都不可以再拆分。
第二范式:在第一范式的基礎上,非主鍵列完全依賴于主鍵,而不能是依賴于主鍵的一部分。
第三范式:在第二范式的基礎上,非主鍵列只依賴于主鍵,不依賴于其他非主鍵。
在設計數據庫結構的時候,要盡量遵守三范式,如果不遵守,必須有足夠的理由。比如性能。事實上我們經常會為了性能而妥協數據庫的設計。
出現概率: ★★★
MySQL服務器通過權限表來控制用戶對數據庫的訪問,權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些權限表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容:
user權限表:記錄允許連接到服務器的用戶帳號信息,里面的權限是全局級的。
db權限表:記錄各個帳號在各個數據庫上的操作權限。
table_priv權限表:記錄數據表級的操作權限。
columns_priv權限表:記錄數據列級的操作權限。
host權限表:配合db權限表對給定主機上數據庫級操作權限作更細致的控制。這個權限表不受GRANT和REVOKE語句的影響。
出現概率: ★★★
MySQL的binlog有三種格式: statement,row和mixed。
1)、statement模式下,每一條會修改數據的sql都會記錄在binlog中。不需要記錄每一行的變化,減少了binlog日志量,節約了IO,提高性能。由于sql的執行是有上下文的,因此在保存的時候需要保存相關的信息,同時還有一些使用了函數之類的語句無法被記錄復制。
2)、row級別下,不記錄sql語句上下文相關信息,僅保存哪條記錄被修改。記錄單元為每一行的改動,基本是可以全部記下來但是由于很多操作,會導致大量行的改動(比如alter table),因此這種模式的文件保存的信息太多,日志量太大。
3)、mixed,一種折中的方案,普通操作使用statement記錄,當無法使用statement的時候使用row。
此外,新版的MySQL中對row級別也做了一些優化,當表結構發生變化的時候,會記錄語句而不是逐行記錄。
出現概率: ★★★★★
主要講講你用過的關系型數據庫比如MySQL, 非關系數據庫(NoSql數據庫)比如Redis, MongoDB等等。
1)、事務方面
關系型數據庫的最大特點就是事務的一致性, 所以對于訂單模型 對一致性要求比較高的還是建議用MySQL。
2)、關系數據庫的另一個特點就是其具有固定的表結構
其實在業務模型中, 表結構固定反而是一件好事, 沒有約束的模型 更容易出問題。
3)、復雜SQL,特別是多表關聯查詢
NoSql是不支持JOIN 這種查詢的。
4)、索引方式
關系型數據庫:B樹、哈希等
NoSql:鍵值索引
5)、并發支持
關系型數據庫:通過事務和鎖來支持并發,高并發情況下,執行效率較低。
NoSql:打破了傳統關系型數據庫范式的約束和事務一致性,因此并發性能高。
當然自己也可以多延伸看一下, 畢竟這個面試出現的概率還是蠻高的。
出現概率: ★★★
第一層是服務器層,主要提供連接處理、授權認證、安全等功能。
第二層實現了 MySQL 核心服務功能,包括查詢解析、分析、優化、緩存以及日期和時間等所有內置函數,所有跨存儲引擎的功能都在這一層實現,例如存儲過程、觸發器、視圖等。
第三層是存儲引擎層,存儲引擎負責 MySQL 中數據的存儲和提取。服務器通過 API 與存儲引擎通信,這些接口屏蔽了不同存儲引擎的差異,使得差異對上層查詢過程透明。除了會解析外鍵定義的 InnoDB 外,存儲引擎不會解析 SQL,不同存儲引擎之間也不會相互通信,只是簡單響應上層服務器請求。
出現概率: ★★★
MVCC 是多版本并發控制,在很多情況下避免加鎖,大都實現了非阻塞的讀操作,寫操作也只鎖定必要的行。
InnoDB 的MVCC 通過在每行記錄后面保存兩個隱藏的列來實現,這兩個列一個保存了行的創建時間,一個保存行的過期時間間。不過存儲的不是實際的時間值而是系統版本號,每開始一個新的事務系統版本號都會自動遞增,事務開始時刻的系統版本號會作為事務的版本號,用來和查詢到的每行記錄的版本號進行比較。
MVCC 只能在 READ COMMITTED 和 REPEATABLE READ 兩個隔離級別下工作,因為 READ UNCOMMITTED 總是讀取最新的數據行,而不是符合當前事務版本的數據行,而 SERIALIZABLE 則會對所有讀取的行都加鎖。
出現概率: ★★★★
在SQL的標準實現上要比MySQL完善,而且功能實現比較嚴謹;
存儲過程的功能支持要比MySQL好,具備本地緩存執行計劃的能力;
對表連接支持較完整,優化器的功能較完整,支持的索引類型很多,復雜查詢能力較強;
PG主表采用堆表存放,MySQL采用索引組織表,能夠支持比MySQL更大的數據量。
PG的主備復制屬于物理復制,相對于MySQL基于binlog的邏輯復制,數據的一致性更加可靠,復制性能更高,對主機性能的影響也更小。
出現概率: ★★★★
這個其實出現的概率還比較高, 自己可以說幾點就行了
MySQL不支持地理數據類型。
從9.2開始,PG支持json數據類型。相對于MySQL來說,PG對json的支持比較先進。他有一些json指定的操作符和函數,是的搜索json文本非常高效。9.4開始,可以以二進制的格式存儲json數據,支持在該列上進行全文索引(GIN索引),從而在json文檔中進行快速搜索。
從5.7開始,MySQL支持json數據類型,比PG晚。也可以在json列上建立索引。然而對json相關的函數的支持比較有限。不支持在json列上全文索引。由于MySQL對SQL支持的限制,在存儲和處理json數據方面,MySQL不是一個很好的選擇。
也歡迎關注我的公眾號: 漫步coding, 回復: mysql免費獲取最新Mysql面試題匯總(含答案)。 一起交流, 在coding的世界里漫步。
希望這篇文章可以幫助大家, 也希望大家都能找到找到的好工作。
MySQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。