MySQL面試題一

MySQL 索引使用有哪些注意事項呢?

可以從兩個維度回答這個問題:

  • 索引哪些情況會失效,
  • 索引不適合哪些場景

索引哪些情況會失效

  • 查詢條件包含or,會導致索引失效。
  • 隱式類型轉換,會導致索引失效,

例如age字段類型是int,我們where age = “1”,這樣就會觸發隱式類型轉換(int轉成string)。

  • like通配符會導致索引失效。

注意:"ABC%“會走range索引,”%ABC"索引才會失效。

  • 聯合索引,查詢時的條件列不是聯合索引中的第一個列,索引失效。
  • 對索引字段進行函數運算。
    對索引列運算(如,+、-、*、/),索引失效。
    索引字段上使用(!= 或者 < >,not in)時,會導致索引失效。
    索引字段上使用is null, is not null,可能導致索引失效。
  • 相join的兩個表的字符編碼不同,不能命中索引,會導致笛卡爾積的循環計算
  • mysql估計使用全表掃描要比使用索引快,則不使用索引。

索引不適合哪些場景

  • 數據量少的不適合加索引
  • 更新比較頻繁的也不適合加索引
  • 離散性低的字段不適合加索引(如性別)

MySQL 遇到過死鎖問題嗎,你是如何解決的?

排查死鎖的步驟:
查看死鎖日志

show engine innodb status;

找出死鎖Sql
分析sql加鎖情況
模擬死鎖案發
分析死鎖日志
分析死鎖結果

日常工作中你是怎么優化SQL的?

可以從這幾個維度回答這個問題:

  • 加索引
  • 避免返回不必要的數據
  • 適當分批量進行
  • 優化sql結構
  • 主從架構,提升讀性能
  • 分庫分表

分庫分表的設計

分庫分表方案,分庫分表中間件,分庫分表可能遇到的問題
分庫分表方案
水平分庫:以字段為依據,按照一定策略(hash、range等),將一個庫中的數據拆分到多個庫中。
水平分表:以字段為依據,按照一定策略(hash、range等),將一個表中的數據拆分到多個表中。
垂直分庫:以表為依據,按照業務歸屬不同,將不同的表拆分到不同的庫中。
垂直分表:以字段為依據,按照字段的活躍性,將表中字段拆到不同的表(主表和擴展表)中。

常用的分庫分表中間件

  • sharding-jdbc
  • Mycat

分庫分表可能遇到的問題

  • 事務問題:需要用分布式事務
  • 跨節點Join的問題:解決這一問題可以分兩次查詢實現
  • 跨節點的count,order by,group by以及聚合函數問題:分別在各個節點上得到結果后在應用程序端進行合并
  • 數據遷移,容量規劃,擴容等問題
  • ID問題:數據庫被切分后,不能再依賴數據庫自身的主鍵生成機制啦,最簡單可以考慮UUID
  • 跨分片的排序分頁問題(后臺加大pagesize處理?)

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

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

相關文章

Idea的基本使用帶案例---詳細易懂

一.idea是什么 有專業人士說&#xff0c;idea是天生適合做微軟&#xff0c;當時我還想肯定是夸大其詞了&#xff0c;但當你用起來的時候確實很爽&#xff0c;&#x1f60a;&#x1f60a; ntelliJ IDEA是一種集成開發環境&#xff08;IDE&#xff09;&#xff0c;由JetBrains開發…

后仿知識總結

基本詞語的概念&#xff1a; &#xff08;1&#xff09;Place&Routing pr&#xff0c;布局布線 sdf基礎概念&#xff1a; 靜態時序分析圣經翻譯計劃——附錄B&#xff1a;SDF&#xff08;上&#xff09; - 知乎 (zhihu.com) 靜態時序分析圣經翻譯計劃——附錄B&#x…

繼承和多態C++

這里寫目錄標題 繼承public、protected、private 修飾類的成員public、protected、private 指定繼承方式改變訪問權限 C繼承時的名字遮蔽問題基類成員函數和派生類成員函數不構成重載C基類和派生類的構造函數構造函數的調用順序基類構造函數調用規則 C基類和派生類的析構函數C多…

MTK Android隱藏NavigationBar

安卓MTK屏蔽NavigationBar, 在SDK中通過搜索關鍵字修改&#xff0c;可適用大部分MTK及安卓版本&#xff0e; 方法介紹 搜索device/mediatek與device/mediateksample下的.xml把config_showNavigationBar值置為false 如下為搜索指令 find device/mediatek -name “*.xml” | xa…

系統架構師---開發方法---敏捷開發

目錄 前言 極限編程 四大價值觀 溝通 簡單 反饋 勇氣 尊重&#xff1a; 十二個最佳實踐 計劃游戲 小型發布 隱喻 簡單設計 測試先行 重構 結對編程 集體代碼所所有制 持續集成 每周工作40小時 現場客戶 編碼標準 前言 2001年2月&#xff0c;在美國的猶他州…

Grafana展示k8s中pod的jvm監控面板/actuator/prometheus

場景 為保障java服務正常運行&#xff0c;對服務的jvm進行監控&#xff0c;通過使用actuator組件監控jvm情況&#xff0c;使用prometheus對數據進行采集&#xff0c;并在Grafana展現。 基于k8s場景 prometheus數據收集 配置service的lable&#xff0c;便于prometheus使用labl…

LVS負載均衡集群

目錄 集群 什么是集群 (含義) 集群的分類 LVS 負載均衡器的集群架構 負載均衡器的群集工作模式 LVS負載均衡器的調度算法 LVS組成作用 組成 作用 LVS群集創建與管理 創建步驟 ipvsadm工具 LVS-NAT部署實戰 1、部署共享存儲 2、配置節點服務器&#xff08;后端服…

JetPack Compose 學習筆記(持續整理中...)

1.為什么要學&#xff1f; 1.命令式和聲明式 UI大戰,個人認為命令式UI自定義程度較高,能更深入到性能,內存優化方面,而申明式UI 是現在主流的設計,比如React,React Native,Flutter,Swift UI等等,現在性能也逐漸在變得更好 2.還有一個原因compose 是KMM 是完整跨平臺的UI基礎 3.…

kafka使用心得(一)

kafka入門 一種分布式的、基于發布/訂閱的消息系統&#xff0c;scala編寫&#xff0c;具備快速、可擴展、可持久化的特點。 基本概念 topic 主題 partition 分區&#xff0c;一個topic下可以有多個partition&#xff0c;消息是分散到多個partition里存儲的&#xff0c;part…

劍指Offer48.最長不含重復字符的子字符串 C++

1、題目描述 請從字符串中找出一個最長的不包含重復字符的子字符串&#xff0c;計算該最長子字符串的長度。 示例 1: 輸入: “abcabcbb” 輸出: 3 解釋: 因為無重復字符的最長子串是 “abc”&#xff0c;所以其長度為 3。 示例 2: 輸入: “bbbbb” 輸出: 1 解釋: 因為無重復字…

圖像處理技巧形態學濾波之膨脹操作

1. 引言 歡迎回來&#xff0c;我的圖像處理愛好者們&#xff01;今天&#xff0c;讓我們繼續研究圖像處理領域中的形態學計算。在本篇中&#xff0c;我們將重點介紹腐蝕操作的反向效果膨脹操作。 閑話少說&#xff0c;我們直接開始吧&#xff01; 2. 膨脹操作原理 膨脹操作…

macOS CLion 使用 bits/stdc++.h

macOS 下 CLion 使用 bits/stdc.h 頭文件 terminal運行 brew install gccCLion里配置 -D CMAKE_CXX_COMPILER/usr/local/bin/g-11

Visual Studio 2022 中解決使用scanf報錯的方法(一勞永逸)

目錄 【前言】 一、scanf報錯示例 二、解決使用scanf報錯的方法 解決方法1&#xff08;不推薦&#xff09; 解決方法2&#xff08;不推薦&#xff09; 解決方法3&#xff08;強烈推薦&#xff09; 第一步 第二步 第三步 三、效果演示&#xff08;方法三&#xff09; …

根據一棵樹的兩種遍歷構造二叉樹

題目 給定兩個整數數組 preorder 和 inorder &#xff0c;其中 preorder 是二叉樹的先序遍歷&#xff0c; inorder 是同一棵樹的中序遍歷&#xff0c;請構造二叉樹并返回其根節點。 示例 1: 輸入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 輸出: [3,9,20,null,null,…

Unity-Linux部署WebGL項目MIME類型添加

在以往的文章中有提到過使用IIS部署WebGL添加MIME類型使WebGL項目在瀏覽器中能夠正常加載&#xff0c;那么如果咱們做的是商業項目&#xff0c;往往是需要部署在學校或者云服務器上面的&#xff0c;大部分情況下如果項目有接口或者后臺管理系統&#xff0c;后臺基本都會使用Lin…

機器學習筆記:李宏毅ChatGPT Finetune VS Prompt

1 兩種大語言模型&#xff1a;GPT VS BERT 2 對于大語言模型的兩種不同期待 2.1 “專才” 2.1.1 成為專才的好處 Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv 箭頭方向指的是從哪個方向往哪個方向翻譯 表格里面的數值越大表示翻譯的越好 可以發現專門做翻…

Ceph入門到精通-Linux下Ceph源碼編譯和GDB調試

Ceph版本&#xff1a;14.2.22 Linux版本&#xff1a;ubuntu-server 18.04 第一部分 下載Ceph源碼 1.1 配置Ceph源碼鏡像源 Ceph源碼是托管在Github上&#xff0c;由于某些原因&#xff0c;國內訪問Github網站很慢&#xff0c;所以需要從其他途徑加速獲取源碼。Github官方給出…

【ubuntu18.04】01-network-manager-all.yaml和interfaces和resolv.conf各有什么區別和聯系

文章目錄 01-network-manager-all.yaml、interfaces 和 resolv.conf 是與網絡配置相關的文件&#xff0c;它們在網絡設置中有著不同的作用和使用方式。 01-network-manager-all.yaml: 這是一個配置文件&#xff0c;通常在 Ubuntu 系統上使用 NetworkManager 進行網絡管理時使用…

ChatGPT?保密嗎?它有哪些潛在風險?如何規避?

自2022年11月公開發布以來&#xff0c;ChatGPT已成為許多企業和個人的必備工具&#xff0c;但隨著該技術越來越多地融入我們的日常生活&#xff0c;人們很自然地想知道&#xff1a;ChatGPT是否是保密的。 問&#xff1a;ChatGPT保密嗎&#xff1f; 答&#xff1a;否&#xff0…

C++11并發與多線程筆記(3)線程傳參詳解,detach()大坑,成員函數做線程函數

C11并發與多線程筆記&#xff08;3&#xff09;線程傳參詳解&#xff0c;detach 大坑&#xff0c;成員函數做線程函數 1、傳遞臨時對象作為線程參數1.1 要避免的陷阱11.2 要避免的陷阱21.3 總結 2、臨時對象作為線程參數2.1 線程id概念2.2 臨時對象構造時機抓捕 3、傳遞類對象…