黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

面試題首頁 > MySQL面試題

MySQL其它面試題

001什么是當(dāng)前讀和快照讀嗎?

簡單來說在高并發(fā)情況下當(dāng)前讀是獲取最新的記錄并且其他事務(wù)不能修改這個記錄、快照讀獲取的有可能是老的數(shù)據(jù)。當(dāng)前讀是加了鎖的,并且加的是悲觀鎖。而快照讀是沒加鎖的。

002什么是MVCC?

MVCC,全稱Multi-Version Concurrency Control,即多版本并發(fā)控制,是一種高并發(fā)版本控制器,一般用于數(shù)據(jù)庫中對數(shù)據(jù)的并發(fā)訪問。Mysql中的innoDB中就是使用這種方法來提高讀寫事務(wù)的并發(fā)性能。因為MVCC是一種不采用鎖來控制事務(wù)的方式,是一種非堵塞、同時還可以解決臟讀,不可重復(fù)讀,幻讀等事務(wù)隔離問題,但不能解決更新丟失問題。
總之:就是MVCC是通過保存數(shù)據(jù)的歷史版本,根據(jù)比較版本號來處理數(shù)據(jù)是否顯示,從而達(dá)到讀取數(shù)據(jù)的時候不需要加鎖就可以保證事務(wù)隔離性的效果。

003MVCC 實現(xiàn)的原理?

MVCC的實現(xiàn)原理是依靠記錄中的3個隱含字段、undo log日志(回滾日志 )、Read View來實現(xiàn)的。
1:隱含字段:
    DB_TRX_ID:記錄操作該數(shù)據(jù)事務(wù)的事務(wù)id;
    DB_ROLL_PTR:指向上一個版本數(shù)據(jù)在undo log里的位置指針
    DB_ROW_ID:隱藏ID,當(dāng)創(chuàng)建表沒有合適的索引作為聚集索引時,會用該隱藏ID創(chuàng)建聚集索引
2:undo log日志:
insert undo log:在進行插入操作事務(wù)時產(chǎn)生、在事務(wù)回滾時需要、在提交事務(wù)后可以被立即丟掉
update undo log:進行update、delete時產(chǎn)生的undo log、不僅在回滾事務(wù)時需要、在快照讀時也需要。所以不能隨便刪除,只有在快照讀或事務(wù)回滾不涉及該日志時,對應(yīng)的日志才會被purge線程統(tǒng)一清除(purge類似jvm中的gc垃圾回收器)
3:Read View(讀視圖)
Read View讀視圖就是用來記錄發(fā)生快照讀那一刻所有的記錄,當(dāng)你下次就算有執(zhí)行新的事務(wù)記錄改變了,read view沒變,讀出來的數(shù)據(jù)依然是不變的。
而隔離級別中的RR(可重復(fù)讀)、和RC(提交讀)不同就是差在快照讀時。前者創(chuàng)建一個快照和Read View,并且下次快照讀時使用的還是同一個Read View,所以其他事務(wù)修改數(shù)據(jù)對他是不可見的、解決了不可重復(fù)讀問題。后者則是每次快照讀時都會產(chǎn)生新的快照和Read View所以就會產(chǎn)生不可重復(fù)讀問題。

004MySQL中都有哪些觸發(fā)器?

MySQL 數(shù)據(jù)庫中有六種觸發(fā)器:
● Before Insert、After Insert
● Before Update、After Update
● Before Delete、After Delete

005什么是MySQL數(shù)據(jù)庫緩存?

開啟Mysql的查詢緩存,當(dāng)執(zhí)行完全相同的SQL語句的時候,服務(wù)器就會直接從緩存中讀取結(jié)果,當(dāng)數(shù)據(jù)被修改,之前的緩存會失效,修改比較頻繁的表不適合做查詢緩存。

006如何查詢緩存相關(guān)的配置?

1. 查看當(dāng)前的MySQL數(shù)據(jù)庫是否支持查詢緩存:
SHOW VARIABLES LIKE 'have_query_cache';
2. 查看當(dāng)前MySQL是否開啟了查詢緩存 :
SHOW VARIABLES LIKE 'query_cache_type';
3. 查看查詢緩存的占用大小 :
SHOW VARIABLES LIKE 'query_cache_size';
4. 查看查詢緩存的狀態(tài)變量:
SHOW STATUS LIKE 'Qcache%';

007緩存數(shù)據(jù)失效時機?

1) SQL 語句不一致的情況, 要想命中查詢緩存,查詢的SQL語句必須完全一致。

select count(*) from tb_item; SQL2 : Select count(*) from tb_item;

2) 當(dāng)查詢語句中有一些不確定的時,則不會緩存。如 : now() , current_date() , curdate() , curtime() , rand() ,uuid() , user() , database() 。

select * from tb_item where updatetime < now() limit 1;?
select user();?
select database();

3) 不使用任何表查詢語句。

select 'A';

4) 查詢 mysql, information_schema或 performance_schema 數(shù)據(jù)庫中的表時,不會走查詢緩存。

select * from information_schema.engines;

5) 在存儲的函數(shù),觸發(fā)器或事件的主體內(nèi)執(zhí)行的查詢。
6) 如果表更改,則使用該表的所有高速緩存查詢都將變?yōu)闊o效并從高速緩存中刪除。這包括使用 MERGE 映射到已更改表的表的查詢。一個表可以被許多類型的語句,如被改變 INSERT, UPDATE, DELETE,TRUNCATE TABLE, ALTER TABLE, DROP TABLE,或 DROP DATABASE 。

008MySQL數(shù)據(jù)類型優(yōu)化?

● 盡量用小范圍的數(shù)據(jù)類型:一般情況下,應(yīng)該盡量使用可以正確存儲數(shù)據(jù)的最小范圍數(shù)據(jù)類型。 
● 盡量用整型:簡單的數(shù)據(jù)類型通常需要更少的CPU周期。例如,整數(shù)比字符操作代價更低,因為字符集和校對規(guī)則(排序規(guī)則)使字符比較比整型比較復(fù)雜。 
● 盡量避免NULL:通常情況下最好指定列為NOT NULL 。

009實踐中如何優(yōu)化MySQL?

最好是按照以下順序優(yōu)化:
1.SQL語句及索引的優(yōu)化
2. 數(shù)據(jù)庫表結(jié)構(gòu)的優(yōu)化
3.系統(tǒng)配置的優(yōu)化
4.硬件的優(yōu)化

目錄

返回頂部
主站蜘蛛池模板: 一个人在线看的免费视频 | 午夜激情视频在线 | 亚洲欧美精品综合中文字幕 | 亚洲中字 | 久99国产在线视频 | 日韩欧美亚洲中字幕在线播放 | 最近最新中文字幕免费大全3 | 极品美女丝袜被的网站 | 国产午夜精品片一区二区三区 | 黑丝美脚| 免费观看成人www精品视频在线 | 在线观看网址你懂的 | 日韩美女影院 | 欧美一级看片免费观看视频在线 | 一本大道大臿蕉香蕉网站 | 久草小说 | 欧美成人性生活视频 | 日韩午夜影院 | 在线观看91精品国产hd | 国产成人污污网站在线观看 | 亚洲综合第一欧美日韩中文 | 亚洲一区二区三区国产精品 | 一级毛片在线不卡直接观看 | 18在线观看的 | 国产视频二区 | 国产成人精品视频一区 | 97久久人人爽人人爽人人 | 国产又爽又黄又不遮挡视频99 | 欧美成人性生活视频 | 亚洲视频免 | 午夜欧美成人久久久久久 | 激情综合网站 | 羞羞视频观看 | av av片在线看| 日韩中文字幕在线看 | 日韩视频第二页 | 欧美videoxx12一14 | 午夜影院日韩 | 成人永久免费福利视频网站 | 亚洲另类电击调教在线观看 | 久久亚洲不卡一区二区 |