Linux運維工程師面試題(5)

来源:https://www.cnblogs.com/waluna/archive/2023/08/30/17668163.html
-Advertisement-
Play Games

[toc] # Linux運維工程師面試題(5) > 祝各位小伙伴們早日找到自己心儀的工作。 > 持續學習才不會被淘汰。 > 地球不爆炸,我們不放假。 > 機會總是留給有有準備的人的。 > 加油,打工人! ## 1 SELECT 語句處理的順序 查詢執行路徑中的組件:查詢緩存、解析器、預處理器、優化 ...


目錄

Linux運維工程師面試題(5)

祝各位小伙伴們早日找到自己心儀的工作。
持續學習才不會被淘汰。
地球不爆炸,我們不放假。
機會總是留給有有準備的人的。
加油,打工人!

1 SELECT 語句處理的順序

查詢執行路徑中的組件:查詢緩存、解析器、預處理器、優化器、查詢執行引擎、存儲引擎

SELECT語句的執行流程:

FROM Clause --> WHERE clause --> GROUP BY --> HAVING clause --> SELECT --> ORDER BY --> LIMIT

2 MySQL 高可用方案有哪些

  • 主從複製+mycat 讀寫分離
  • MHA(Master High Availability)
  • Galera Cluster

3 mysql 主從複製原理

用戶提交數據更新到主庫,主庫會生成二進位日誌,寫入到 bin log 中;主庫開啟 dump 線程,用來給從庫的 io 線程傳送 bin log;從庫的 io 線程去請求主庫的 bin log,並將得到的 bin log 寫入到中繼日誌(relay log)中,sql 線程會讀取 relay log 文件中的日誌,並解析成具體的操作,來執行資料庫更新,保證主庫和從庫數據一致,完成主從複製。

4 mycat 讀寫分離原理

Mycat 的原理中最重要的一個動詞是"攔截",它攔截了用戶發送過來的 SQL 語句,首先對 SQL 語句做了—些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然後將此 SQL 發往後端的真實資料庫,並將返回的結果做適當的處理,最終再返回給用戶。

5 MHA 高可用原理

  1. 從宕機崩潰的 master 保存二進位日誌事件(bin log events);
  2. 識別含有最新更新的 slave;
  3. 應用差異的中繼日誌(relay log)到其他的 slave;
  4. 應用從 master 保存的二進位日誌事件(bin log events);
  5. 提升—個 slave 為新的 master;
  6. 使其他的 slave 連接新的 master 進行複製。

6 mysqldump 備份的原理

是一個 mysql 的客戶端命令,通過 mysql 協議連接至 mysql 伺服器進行備份。mysqldump 命令將資料庫中的數據備份成一個文本文件。表的結構和表中的數據將存儲在生成的文本文件中。它先使用 select 查出需要備份表的數據和需要備份的表的結構,再在文本文件中生成一個 CREATE 語句。然後將表中的所有記錄轉換成一條 INSERT 語句。然後通過這些語句,就能夠創建表並插入數據。其實就是相當於模擬mysql客戶端去連接資料庫,將mysql中的數據生成一個標準輸出,在屏幕列印,一般配合標準輸出重定向,導入到一個文件中。mysqldump 整體備份的基本流程如下:

  1. 調用 FTWRL(flush tables with read lock),全局禁止寫。
  2. 開啟快照讀,獲取此時的快照(僅對 innodb 表起作用)。
  3. 備份非 innodb 表數據( .frm、.myi、.myd 等)。
  4. 非 innodb 表備份完畢後,釋放 FTWRL 鎖。
  5. 逐一備份 innodb 表數據。
  6. 備份完成。

7 drop, delete 與 truncate 的區別,哪個最快

drop 直接刪掉表;truncate 刪除表中數據,再插⼊時自增長id又從1開始;delete 刪除表中數據,可以加 where 子句。想要刪除部分數據用 delete;想要刪除表用 drop; 想保留表但是把數據刪除,如果和事務無關用 truncate。

  1. delete 語句執⾏刪除的過程是每次從表中刪除⼀⾏,並且同時將該⾏的刪除操作作為事務記錄在⽇志中保存以便進⾏回滾操作。truncate table則⼀次性地從表中刪除所有的數據並不把單獨的刪除操作記錄記⼊⽇志保存,刪除⾏是不能恢復的。並且在刪除的過程中不會激活與表有關的刪除觸發器,執⾏速度快。
  2. 表和索引所占空間。當表被 truncate 後,這個表和索引所占⽤的空間會恢復到初始⼤⼩,⽽ delete 操作不會減少表或索引所占⽤的空間。drop 語句將表所占⽤的空間全釋放掉。
  3. ⼀般⽽⾔,在刪除速度上,drop > truncate > delete。
  4. 應⽤範圍:truncate 只能對 table,delete 可以是 table 和 view。
  5. truncate 和 delete 只刪除數據,⽽ drop 則刪除整個表(結構和數據)。
  6. truncate 與不帶 where 的 delete:只刪除數據,⽽不刪除表的結構(定義);drop 語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變為:invalid。

8 判斷主從延遲的方法

通過命令 show slave status 查看 seconds_behind_master 的值來判斷

NULL - 表示 io_thread 或是 sql_thread 有任何一個發生故障,也就是該線程的 Running 狀態是 No,而非Yes。

0 - 該值為零,是我們極為渴望看到的情況,表示主從複製狀態正常。

9 MySQL 主要的索引類型

  • 普通索引:是最基本的索引,它沒有任何限制;
  • 唯一索引:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一;
  • 主鍵索引:是一種特殊的唯一索引,一個表只能有一個主鍵,不允許有空值;
  • 組合索引:指多個欄位上創建的索引,只有在查詢條件中使用了創建索引時的第一個欄位,索引才會被使用。使用組合索引時遵循最左首碼集合;
  • 全文索引:主要用來查找文本中的關鍵字,而不是直接與索引中的值相比較,mysql 中 MyISAM 支持全文索引而 InnoDB 不支持;

10 MySQL 中 myisam 與 innodb 的區別

  1. innodb⽀持事物, myisam不⽀持事物
  2. innodb⽀持⾏級鎖, myisam⽀持表級鎖
  3. innodb⽀持MVC, myisam不⽀持
  4. innodb⽀持外鍵, myisam不⽀持
  5. innodb不⽀持全⽂索引,myisam⽀持

關於我
全網可搜《阿賢Linux》
CSDN、知乎、嗶哩嗶哩、博客園、51CTO、掘金、思否、開源中國、阿裡雲、騰訊雲、華為雲、今日頭條、百家號、GitHub、個人博客
公眾號:阿賢Linux
個人博客:blog.waluna.top
https://blog.waluna.top/


原文鏈接: Linux運維工程師面試題(5).


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ## 教程簡介 R是用於統計分析、繪圖的語言和操作環境。R是屬於GNU系統的一個自由、免費、源代碼開放的軟體,它是一個用於統計計算和統計製圖的優秀工具。R語言的核心是解釋電腦語言,其允許分支和迴圈以及使用函數的模塊化編程。 R語言允許與以C,C ++,.Net,Python或FORTRAN語言編寫 ...
  • 作者:TinyThing 鏈接:https://www.jianshu.com/p/b52db905f020 ## 0x0 背景 > 項目中使用LocalDateTime系列作為dto中時間的類型,但是spring收到參數後總報錯,為了全局配置時間類型轉換,嘗試瞭如下3中方法。 > > **註:本文 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 本篇是《java與es8實戰》系列的第四 ...
  • 昨天分享了一個在WebApi中如何接收參數的文章 傳送門,然後有新人小伙伴就問了,那文件上傳呢,這個怎麼弄,藉此我寫了一個小demo,分享給大家。 通常來說,上傳文件,我們是使用POST,還是老規矩先上代碼: txt文件 這是需要上傳的txt文件。 指定文件參數名 代碼 [HttpPost("Upl ...
  • ## 前言 在軟體系統中,有時候面臨著“一個複雜對象”的創建工作,其通常由各個部分的子對象用一定的演算法構成;由於需求的變化,這個複雜對象的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。如何應對這種變化?如何提供一種“封裝機制”來隔離出“複雜對象的各個部分”的變化,從而保持系統中 ...
  • ##### 常用基本配置項 ```xml net35; net40; net45; net451; net452; net46; net461; net462; net47; net471; net472; net48; netstandard2.0; netstandard2.1; netcore ...
  • ## 前言 在抽象工廠模式開篇之前,我們先思考一個問題,如果我們要設計一套房子,其他的組件暫時不考慮,我們僅僅考慮房頂、地板、窗戶、房門進行設計。什麼樣的風格暫時未知,可能會有很多種類。可以先設計一套古典風格的房子,再設計一套現代風格的房子,再設計一套歐式風格的房子....這麼多套房子需要設計,需求 ...
  • 原文鏈接:https://www.cnblogs.com/ysmc/p/17663663.html 最近技術交流群里,還有不少小伙伴不知道 FromRoute、FromQuery、FromBody 這幾個特性是怎麼使用的,也不清楚它們之間的區別在哪裡,特意寫下這個文章,希望可以幫助到迷茫的小伙伴。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...