常見的儲存引擎
InnoDB MyISAM
MyISAM和InnoDB的區(qū)別
①InnoDB支持事務(wù),MyISAM不支持②InnoDB是行級鎖,MyISAM是表級鎖③InnoDB支持外鍵,MyISAM不支持外鍵④MyISAM支持全文索引,InnoDB部分版本不支持,但是我們可以通過插件來實現(xiàn)⑤InnoDB支持多版本并發(fā)控制,MyISAM不支持
MySQL的事務(wù)隔離級別有哪些
已讀未提交:一個事務(wù)還沒提交的時候,他的操作可以被其他事務(wù)看到已讀已提交:一個事務(wù)提交之后,他的操作才可以被其他事務(wù)看到可重復(fù)讀:一個事務(wù)執(zhí)行過程中,他讀取到的數(shù)據(jù)總是一致的可串行化:一個事務(wù)讀取數(shù)據(jù)的時候會進行加鎖,如果其他事務(wù)要讀取數(shù)據(jù),只能等之前事務(wù)完成之后才能讀取
一千萬條數(shù)據(jù)的表, 如何分頁查詢
我們使用limit來進行分頁的話,執(zhí)行時間會很長,我們可以使用當(dāng)前頁最后一條id來幫我們提高效率,也就是再加上id來作為分頁的條件 select * from where id>#{id} limit #{limit},這種情況下id是要有序的
訂單表數(shù)據(jù)量越來越大導(dǎo)致查詢緩慢, 如何處理
由于訂單表的使用率不高,我們可以將之前的訂單數(shù)據(jù)按月或者年進行分庫分表操作,減輕我們數(shù)據(jù)庫查詢的負擔(dān)
MySQL中有哪些鎖
①行級鎖:開銷大,鎖速度慢,會出現(xiàn)死鎖,鎖定粒度是最小的,并發(fā)度是最高的②表級鎖:開銷小,鎖速度快,不會出現(xiàn)死鎖,鎖定粒度也是最大的,并發(fā)度是最底的③頁面鎖:處于行級鎖和表級鎖之間,會出現(xiàn)死鎖,并發(fā)度一般
MySQL 中有哪些不同的表格
MyISAM ISAM:早期Mysql版本的缺省表類型InnoDB Merge heap:讀取速度最快
CHAR 和VARCHAR 的區(qū)別
char是長度不可變的,varchar是長度可變的char的效率比varchar效率要高
可以使用多少列創(chuàng)建索引
一個表中最多可以有16個索引列
NOW()和 CURRENT_DATE()有什么區(qū)別?
now(): 年月日時分秒current_date(): 年月日?
什么是通用 SQL 函數(shù)?
MySQL中提供了很多函數(shù)讓我們進行調(diào)用,比如:YEAR(),MAX(),CONCAT(),MOUNTH(),CURRENT_DATE()
MySQL支持事務(wù)嗎
在缺省模式下,mysql是autocommit模式的,當(dāng)數(shù)據(jù)庫進行修改操作的時候就會自動提交,所以在缺省模式下是不支持事務(wù)的但是如果表的類型是InnoDB或者是BDB模式的話,是可以支持事務(wù)的,也就是通過setAutocommint=0來進行設(shè)置,但是設(shè)置了之后事務(wù)需要我們手動commit或者進行rockback回滾
MySQL的優(yōu)化有哪些?
①我們可以添加索引來提高數(shù)據(jù)的查詢效率? 索引分為BTree和哈希索引,哈希索引底層是哈希表,搜索效率比較高②通過sql語句來進行優(yōu)化 比如添加orderBy 或者條件查詢 (遵從小表驅(qū)動大表原則)③通過存儲引擎來進行優(yōu)化,存儲引擎有InnoDB(事務(wù))和MyISAM(查詢效率高)④通過分庫分表:根據(jù)規(guī)律分,降低數(shù)據(jù)庫的壓力(主從分庫 主庫負責(zé)寫,從庫負責(zé)讀)水平分庫/分表垂直分庫/分表垂直分表:可以將很多字段的表進行分表操作,將熱點數(shù)據(jù)的放一個表,不是熱點數(shù)據(jù)的放一個表(比如用戶表)垂直分庫:我們可以將通用表,字典表分到一個數(shù)據(jù)庫中
Myql語句的執(zhí)行流程from -> on? -> join -> where ->? group by ->having -> select -> distinct -> order by
Explain關(guān)鍵字
我們可以跳過explain關(guān)鍵字來查詢當(dāng)前這個sql語句的執(zhí)行計劃,也就是是否引入索引,有沒有全表掃描
Explain命令執(zhí)行后type類型可能出現(xiàn)什么參數(shù)?
null ->system->const->eq_ref->ref->range->index->all (性能從好到差)
Profiling工具的作用
profiling可以查詢優(yōu)化前sql和優(yōu)化后sql的性能(執(zhí)行時間),默認是不開啟的,我們可以通過set? profiling=1來開啟
單路排序和多路排序的區(qū)別與原理分析