-
Linux運維工程師面試題(5)
- 1 SELECT 語句處理的順序
- 2 MySQL 高可用方案有哪些
- 3 mysql 主從復(fù)制原理
- 4 mycat 讀寫分離原理
- 5 MHA 高可用原理
- 6 mysqldump 備份的原理
- 7 drop, delete 與 truncate 的區(qū)別,哪個最快
- 8 判斷主從延遲的方法
- 9 MySQL 主要的索引類型
- 10 MySQL 中 myisam 與 innodb 的區(qū)別
Linux運維工程師面試題(5)
祝各位小伙伴們早日找到自己心儀的工作。
持續(xù)學習才不會被淘汰。
地球不爆炸,我們不放假。
機會總是留給有有準備的人的。
加油,打工人!
1 SELECT 語句處理的順序
查詢執(zhí)行路徑中的組件:查詢緩存、解析器、預(yù)處理器、優(yōu)化器、查詢執(zhí)行引擎、存儲引擎
SELECT語句的執(zhí)行流程:
FROM Clause --> WHERE clause --> GROUP BY --> HAVING clause --> SELECT --> ORDER BY --> LIMIT
2 MySQL 高可用方案有哪些
- 主從復(fù)制+mycat 讀寫分離
- MHA(Master High Availability)
- Galera Cluster
3 mysql 主從復(fù)制原理
用戶提交數(shù)據(jù)更新到主庫,主庫會生成二進制日志,寫入到 bin log 中;主庫開啟 dump 線程,用來給從庫的 io 線程傳送 bin log;從庫的 io 線程去請求主庫的 bin log,并將得到的 bin log 寫入到中繼日志(relay log)中,sql 線程會讀取 relay log 文件中的日志,并解析成具體的操作,來執(zhí)行數(shù)據(jù)庫更新,保證主庫和從庫數(shù)據(jù)一致,完成主從復(fù)制。
4 mycat 讀寫分離原理
Mycat 的原理中最重要的一個動詞是"攔截",它攔截了用戶發(fā)送過來的 SQL 語句,首先對 SQL 語句做了—些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此 SQL 發(fā)往后端的真實數(shù)據(jù)庫,并將返回的結(jié)果做適當?shù)奶幚恚罱K再返回給用戶。
5 MHA 高可用原理
- 從宕機崩潰的 master 保存二進制日志事件(bin log events);
- 識別含有最新更新的 slave;
- 應(yīng)用差異的中繼日志(relay log)到其他的 slave;
- 應(yīng)用從 master 保存的二進制日志事件(bin log events);
- 提升—個 slave 為新的 master;
- 使其他的 slave 連接新的 master 進行復(fù)制。
6 mysqldump 備份的原理
是一個 mysql 的客戶端命令,通過 mysql 協(xié)議連接至 mysql 服務(wù)器進行備份。mysqldump 命令將數(shù)據(jù)庫中的數(shù)據(jù)備份成一個文本文件。表的結(jié)構(gòu)和表中的數(shù)據(jù)將存儲在生成的文本文件中。它先使用 select 查出需要備份表的數(shù)據(jù)和需要備份的表的結(jié)構(gòu),再在文本文件中生成一個 CREATE 語句。然后將表中的所有記錄轉(zhuǎn)換成一條 INSERT 語句。然后通過這些語句,就能夠創(chuàng)建表并插入數(shù)據(jù)。其實就是相當于模擬mysql客戶端去連接數(shù)據(jù)庫,將mysql中的數(shù)據(jù)生成一個標準輸出,在屏幕打印,一般配合標準輸出重定向,導入到一個文件中。mysqldump 整體備份的基本流程如下:
- 調(diào)用 FTWRL(flush tables with read lock),全局禁止寫。
- 開啟快照讀,獲取此時的快照(僅對 innodb 表起作用)。
- 備份非 innodb 表數(shù)據(jù)( .frm、.myi、.myd 等)。
- 非 innodb 表備份完畢后,釋放 FTWRL 鎖。
- 逐一備份 innodb 表數(shù)據(jù)。
- 備份完成。
7 drop, delete 與 truncate 的區(qū)別,哪個最快
drop 直接刪掉表;truncate 刪除表中數(shù)據(jù),再插?時自增長id又從1開始;delete 刪除表中數(shù)據(jù),可以加 where 子句。想要刪除部分數(shù)據(jù)用 delete;想要刪除表用 drop; 想保留表但是把數(shù)據(jù)刪除,如果和事務(wù)無關(guān)用 truncate。
- delete 語句執(zhí)?刪除的過程是每次從表中刪除??,并且同時將該?的刪除操作作為事務(wù)記錄在?志中保存以便進?回滾操作。truncate table則?次性地從表中刪除所有的數(shù)據(jù)并不把單獨的刪除操作記錄記??志保存,刪除?是不能恢復(fù)的。并且在刪除的過程中不會激活與表有關(guān)的刪除觸發(fā)器,執(zhí)?速度快。
- 表和索引所占空間。當表被 truncate 后,這個表和索引所占?的空間會恢復(fù)到初始??,? delete 操作不會減少表或索引所占?的空間。drop 語句將表所占?的空間全釋放掉。
- ?般??,在刪除速度上,drop > truncate > delete。
- 應(yīng)?范圍:truncate 只能對 table,delete 可以是 table 和 view。
- truncate 和 delete 只刪除數(shù)據(jù),? drop 則刪除整個表(結(jié)構(gòu)和數(shù)據(jù))。
- truncate 與不帶 where 的 delete:只刪除數(shù)據(jù),?不刪除表的結(jié)構(gòu)(定義);drop 語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index);依賴于該表的存儲過程/函數(shù)將被保留,但其狀態(tài)會變?yōu)椋篿nvalid。
8 判斷主從延遲的方法
通過命令 show slave status 查看 seconds_behind_master 的值來判斷
NULL - 表示 io_thread 或是 sql_thread 有任何一個發(fā)生故障,也就是該線程的 Running 狀態(tài)是 No,而非Yes。
0 - 該值為零,是我們極為渴望看到的情況,表示主從復(fù)制狀態(tài)正常。
9 MySQL 主要的索引類型
- 普通索引:是最基本的索引,它沒有任何限制;
- 唯一索引:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一;
- 主鍵索引:是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值;
- 組合索引:指多個字段上創(chuàng)建的索引,只有在查詢條件中使用了創(chuàng)建索引時的第一個字段,索引才會被使用。使用組合索引時遵循最左前綴集合;
- 全文索引:主要用來查找文本中的關(guān)鍵字,而不是直接與索引中的值相比較,mysql 中 MyISAM 支持全文索引而 InnoDB 不支持;
10 MySQL 中 myisam 與 innodb 的區(qū)別
- innodb?持事物, myisam不?持事物
- innodb?持?級鎖, myisam?持表級鎖
- innodb?持MVC, myisam不?持
- innodb?持外鍵, myisam不?持
- innodb不?持全?索引,myisam?持
關(guān)于我
全網(wǎng)可搜《阿賢Linux》
CSDN、知乎、嗶哩嗶哩、博客園、51CTO、掘金、思否、開源中國、阿里云、騰訊云、華為云、今日頭條、百家號、GitHub、個人博客
公眾號:阿賢Linux
個人博客:blog.waluna.top
https://blog.waluna.top/文章來源:http://www.zghlxwxcb.cn/news/detail-682582.html
原文鏈接: Linux運維工程師面試題(5).文章來源地址http://www.zghlxwxcb.cn/news/detail-682582.html
到了這里,關(guān)于Linux運維工程師面試題(5)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!