日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库常考面试知识点

發(fā)布時間:2024/2/28 数据库 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库常考面试知识点 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1)什么是存儲過程?有哪些優(yōu)缺點?

存儲過程就像是編程語言中的函數(shù)一樣,封裝了我們的代碼(PLSQL,T-SQL)

例如:

-------------創(chuàng)建名為GetUserAccount的存儲過程---------------- create?Procedure?GetUserAccount as select?*?from?UserAccount go-------------執(zhí)行上面的存儲過程---------------- exec?GetUserAccount

存儲過程的優(yōu)點:

  • 能夠?qū)⒋a封裝起來

  • 保存在數(shù)據(jù)庫之中

  • 讓編程語言進行調(diào)用

  • 存儲過程是一個預編譯的代碼塊,執(zhí)行效率比較高

  • 一個存儲過程替代大量T_SQL語句 ,可以降低網(wǎng)絡通信量,提高通信速率

存儲過程的缺點:

  • 每個數(shù)據(jù)庫的存儲過程語法幾乎都不一樣,十分難以維護(不通用)

  • 業(yè)務邏輯放在數(shù)據(jù)庫上,難以迭代


2)三大范式

  • 思考這樣的一個例子:

我們現(xiàn)在需要建立一個描述學校教務的數(shù)據(jù)庫,該數(shù)據(jù)庫涉及的對象包括學生的學號(Sno)、所在系(Sdept)、系主任姓名(Mname)、課程號(Cno)和成績(Grade),假設我們使用單一的關系模式 Student 來表示,那么根據(jù)現(xiàn)實世界已知的信息,會描述成以下這個樣子:

?

?

但是,這個關系模式存在以下問題:

(1) 數(shù)據(jù)冗余
比如,每一個系的系主任姓名重復出現(xiàn),重復次數(shù)與該系所有學生的所有課程成績出現(xiàn)次數(shù)相同,這將浪費大量的存儲空間。
(2)更新異常(update anomalies)
由于數(shù)據(jù)冗余,當更新數(shù)據(jù)庫中的數(shù)據(jù)時,系統(tǒng)要付出很大的代價來維護數(shù)據(jù)庫的完整性,否則會面臨數(shù)據(jù)不一致的危險。比如,某系更換系主任后,必須修改與該系學生有關的每一個元組。
(3)插入異常(insertion anomalies)
如果一個系剛成立,尚無學生,則無法把這個系及其系主任的信息存入數(shù)據(jù)庫。
(4)刪除異常(deletion anomalies)
如果某個系的學生全部畢業(yè)了,則在刪除該系學生信息的同時,這個系及其系主任的信息也丟失了。

  • 總結(jié):?所以,我們在設計數(shù)據(jù)庫的時候,就需要滿足一定的規(guī)范要求,而滿足不同程度要求的就是不同的范式。

  • 第一范式:?列不可分

1NF(第一范式)是對屬性具有原子性的要求,不可再分,例如:

?

如果認為最后一列還可以再分成出生年,出生月,出生日,則它就不滿足第一范式的要求。

  • 第二范式:?消除非主屬性對碼的部分函數(shù)依賴

2NF(第二范式)是對記錄有唯一性的要求,即實體的唯一性,不存在部分依賴,每一列與主鍵都相關,例如:

?

該表明顯說明了兩個事物:學生信息和課程信息;正常的依賴應該是:學分依賴課程號,姓名依賴學號,但這里存在非主鍵字段對碼的部分依賴,即與主鍵不相關,不滿足第二范式的要求。

可能存在的問題:

  • 數(shù)據(jù)冗余:每條記錄都含有相同信息;

  • 刪除異常:刪除所有學生成績,就把課程信息全刪除了;

  • 插入異常:學生未選課,無法記錄進數(shù)據(jù)庫;

  • 更新異常:調(diào)整課程學分,所有行都調(diào)整。

正確的做法:

?

  • 第三范式:?消除非主屬性對碼的傳遞函數(shù)依賴

3NF(第三范式)對字段有冗余性的要求,任何字段不能由其他字段派生出來,它要求字段沒有冗余,即不存在依賴傳遞,例如:

?

?

很明顯,學院電話是一個冗余字段,因為存在依賴傳遞:(學號)→(學生)→(學院)→(學院電話)

可能會存在的問題:

  • 數(shù)據(jù)冗余:有重復值;

  • 更新異常:有重復的冗余信息,修改時需要同時修改多條記錄,否則會出現(xiàn)數(shù)據(jù)不一致的情況 。

正確的做法:

?


3)數(shù)據(jù)庫索引

  • 什么是索引?

索引是對數(shù)據(jù)庫表中一個或多個列的值進行排序的數(shù)據(jù)結(jié)構(gòu),以協(xié)助快速查詢、更新數(shù)據(jù)庫表中數(shù)據(jù)。

你也可以這樣理解:索引就是加快檢索表中數(shù)據(jù)的方法。數(shù)據(jù)庫的索引類似于書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。在數(shù)據(jù)庫中,索引也允許數(shù)據(jù)庫程序迅速地找到表中的數(shù)據(jù),而不必掃描整個數(shù)據(jù)庫。

  • 底層數(shù)據(jù)結(jié)構(gòu)是什么,為什么使用這種數(shù)據(jù)結(jié)構(gòu)?

(1)底層數(shù)據(jù)結(jié)構(gòu)是B+樹:
在數(shù)據(jù)結(jié)構(gòu)中,我們最為常見的搜索結(jié)構(gòu)就是二叉搜索樹和AVL樹(高度平衡的二叉搜索樹,為了提高二叉搜索樹的效率,減少樹的平均搜索長度)了。然而,無論二叉搜索樹還是AVL樹,當數(shù)據(jù)量比較大時,都會由于樹的深度過大而造成I/O讀寫過于頻繁,進而導致查詢效率低下,因此對于索引而言,多叉樹結(jié)構(gòu)成為不二選擇。特別地,B-Tree的各種操作能使B樹保持較低的高度,從而保證高效的查找效率。

(2)使用B+樹的原因:
查找速度快、效率高,在查找的過程中,每次都能拋棄掉一部分節(jié)點,減少遍歷個數(shù)。(此時,你應該在白紙上畫出什么是B+樹)

  • 索引的分類?

  • 唯一索引:唯一索引不允許兩行具有相同的索引值

  • 主鍵索引:為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個值是唯一的,并且不能為空

  • 聚集索引(Clustered):表中各行的物理順序與鍵值的邏輯(索引)順序相同,每個表只能有一個

  • 非聚集索引(Non-clustered):非聚集索引指定表的邏輯順序。數(shù)據(jù)存儲在一個位置,索引存儲在另一個位置,索引中包含指向數(shù)據(jù)存儲位置的指針。可以有多個,小于249個

  • 索引的優(yōu)缺點?

(1)優(yōu)點:

  • 大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因;

  • 加速表和表之間的連接;

  • 在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間;

  • 通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性;

(2)缺點:

  • 時間方面:創(chuàng)建索引和維護索引要耗費時間,具體地,當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度;

  • 空間方面:索引需要占物理空間。

  • 什么樣的字段適合創(chuàng)建索引?

  • 經(jīng)常作查詢選擇的字段

  • 經(jīng)常作表連接的字段

  • 經(jīng)常出現(xiàn)在order by, group by, distinct 后面的字段

  • 創(chuàng)建索引時需要注意什么?

  • 非空字段:應該指定列為NOT NULL,除非你想存儲NULL。在mysql中,含有空值的列很難進行查詢優(yōu)化,因為它們使得索引、索引的統(tǒng)計信息以及比較運算更加復雜。你應該用0、一個特殊的值或者一個空串代替空值;

  • 取值離散大的字段:(變量各個取值之間的差異程度)的列放到聯(lián)合索引的前面,可以通過count()函數(shù)查看字段的差異值,返回值越大說明字段的唯一值越多字段的離散程度高;

  • 索引字段越小越好:數(shù)據(jù)庫的數(shù)據(jù)存儲以頁為單位一頁存儲的數(shù)據(jù)越多一次IO操作獲取的數(shù)據(jù)越大效率越高。


4)聽說過事務嗎?(必考)

事務簡單來說:一個 Session 中所進行所有的操作,要么同時成功,要么同時失敗;作為單個邏輯工作單元執(zhí)行的一系列操作,滿足四大特性:

  • 原子性(Atomicity):事務作為一個整體被執(zhí)行 ,要么全部執(zhí)行,要么全部不執(zhí)行

  • 一致性(Consistency):保證數(shù)據(jù)庫狀態(tài)從一個一致狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€一致狀態(tài)

  • 隔離性(Isolation):多個事務并發(fā)執(zhí)行時,一個事務的執(zhí)行不應影響其他事務的執(zhí)行

  • 持久性(Durability):一個事務一旦提交,對數(shù)據(jù)庫的修改應該永久保存

    • 實例說明:

    /**?我們來模擬A向B賬號轉(zhuǎn)賬的場景*???A和B賬戶都有1000塊,現(xiàn)在我讓A賬戶向B賬號轉(zhuǎn)500塊錢***/ //JDBC默認的情況下是關閉事務的,下面我們看看關閉事務去操作轉(zhuǎn)賬操作有什么問題//A賬戶減去500塊 String?sql?=?"UPDATE?a?SET?money=money-500?"; preparedStatement?=?connection.prepareStatement(sql); preparedStatement.executeUpdate();//B賬戶多了500塊 String?sql2?=?"UPDATE?b?SET?money=money+500"; preparedStatement?=?connection.prepareStatement(sql2); preparedStatement.executeUpdate();

    從上面看,我們的確可以發(fā)現(xiàn)A向B轉(zhuǎn)賬,成功了。可是如果A向B轉(zhuǎn)賬的過程中出現(xiàn)了問題呢?下面模擬一下

    //?A賬戶減去500塊 String?sql?=?"UPDATE?a?SET?money=money-500?"; preparedStatement?=?connection.prepareStatement(sql); preparedStatement.executeUpdate();//?這里模擬出現(xiàn)問題 int?a?=?3?/?0;String?sql2?=?"UPDATE?b?SET?money=money+500"; preparedStatement?=?connection.prepareStatement(sql2); preparedStatement.executeUpdate();

    顯然,上面代碼是會拋出異常的,我們再來查詢一下數(shù)據(jù)。A賬戶少了500塊錢,B賬戶的錢沒有增加。這明顯是不合理的。

    我們可以通過事務來解決上面出現(xiàn)的問題:

    ????//?開啟事務,對數(shù)據(jù)的操作就不會立即生效。connection.setAutoCommit(false);//?A賬戶減去500塊String?sql?=?"UPDATE?a?SET?money=money-500?";preparedStatement?=?connection.prepareStatement(sql);preparedStatement.executeUpdate();//?在轉(zhuǎn)賬過程中出現(xiàn)問題int?a?=?3?/?0;//?B賬戶多500塊String?sql2?=?"UPDATE?b?SET?money=money+500";preparedStatement?=?connection.prepareStatement(sql2);preparedStatement.executeUpdate();//?如果程序能執(zhí)行到這里,沒有拋出異常,我們就提交數(shù)據(jù)connection.commit();//?關閉事務【自動提交】connection.setAutoCommit(true);}?catch(SQLException?e)?{try?{//?如果出現(xiàn)了異常,就會進到這里來,我們就把事務回滾【將數(shù)據(jù)變成原來那樣】connection.rollback();//?關閉事務【自動提交】connection.setAutoCommit(true);}?catch?(SQLException?e1)?{e1.printStackTrace();} }

    上面的程序也一樣拋出了異常,A賬戶錢沒有減少,B賬戶的錢也沒有增加。

    • 注意:當Connection遇到一個未處理的SQLException時,系統(tǒng)會非正常退出,事務也會自動回滾,但如果程序捕獲到了異常,是需要在catch中顯式回滾事務的。


    5)事務的并發(fā)問題有哪幾種?

  • 丟失更新:一個事務的更新覆蓋了另一個事務的更新;

  • 臟讀:一個事務讀取了另一個事務未提交的數(shù)據(jù);

  • 不可重復讀:不可重復讀的重點是修改,同樣條件下兩次讀取結(jié)果不同,也就是說,被讀取的數(shù)據(jù)可以被其它事務修改;

  • 幻讀:幻讀的重點在于新增或者刪除,同樣條件下兩次讀出來的記錄數(shù)不一樣。


  • 6)事務的隔離級別有哪幾種?

    隔離級別決定了一個session中的事務可能對另一個session中的事務的影響。ANSI標準定義了4個隔離級別,MySQL的InnoDB都支持,分別是:

  • 讀未提交(READ UNCOMMITTED):最低級別的隔離,通常又稱為dirty read,它允許一個事務讀取另一個事務還沒 commit 的數(shù)據(jù),這樣可能會提高性能,但是會導致臟讀問題;

  • 讀已提交(READ COMMITTED):在一個事務中只允許對其它事務已經(jīng) commit 的記錄可見,該隔離級別不能避免不可重復讀問題;

  • 可重復讀(REPEATABLE READ):在一個事務開始后,其他事務對數(shù)據(jù)庫的修改在本事務中不可見,直到本事務 commit 或 rollback。但是,其他事務的 insert/delete 操作對該事務是可見的,也就是說,該隔離級別并不能避免幻讀問題。在一個事務中重復 select 的結(jié)果一樣,除非本事務中 update 數(shù)據(jù)庫。

  • 序列化(SERIALIZABLE):最高級別的隔離,只允許事務串行執(zhí)行。

  • MySQL默認的隔離級別是可重復讀(REPEATABLE READ)

    • MySql 的事務支持

    MySQL的事務支持不是綁定在MySQL服務器本身,而是與存儲引擎相關:

    • MyISAM:不支持事務,用于只讀程序提高性能;

    • InnoDB:支持ACID事務、行級鎖、并發(fā);

    • Berkeley DB:支持事務。


    7)什么是視圖?以及視圖的使用場景有哪些?

    視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查,操作,試圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易,相比多表查詢。

    如下兩種場景一般會使用到視圖:

  • 不希望訪問者獲取整個表的信息,只暴露部分字段給訪問者,所以就建一個虛表,就是視圖。

  • 查詢的數(shù)據(jù)來源于不同的表,而查詢者希望以統(tǒng)一的方式查詢,這樣也可以建立一個視圖,把多個表查詢結(jié)果聯(lián)合起來,查詢者只需要直接從視圖中獲取數(shù)據(jù),不必考慮數(shù)據(jù)來源于不同表所帶來的差異。

  • 注意:這個視圖是在數(shù)據(jù)庫中創(chuàng)建的 而不是用代碼創(chuàng)建的。


    8)drop,delete與truncate的區(qū)別?

    drop 直接刪除表;truncate 刪除表中數(shù)據(jù),再插入時自增長id又從1開始 ;delete 刪除表中數(shù)據(jù),可以加where字句。

    • drop table:

    • 屬于DDL(Data Definition Language,數(shù)據(jù)庫定義語言)

    • 不可回滾

    • 不可帶 where

    • 表內(nèi)容和結(jié)構(gòu)刪除

    • 刪除速度快

    • truncate table:

    • 屬于DDL(Data Definition Language,數(shù)據(jù)庫定義語言)

    • 不可回滾

    • 不可帶 where

    • 表內(nèi)容刪除

    • 刪除速度快

    • delete from:

    • 屬于DML

    • 可回滾

    • 可帶where

    • 表結(jié)構(gòu)在,表內(nèi)容要看where執(zhí)行的情況

    • 刪除速度慢,需要逐行刪除

    • 使用簡要說明:

    • 不再需要一張表的時候,用drop

    • 想刪除部分數(shù)據(jù)行時候,用delete,并且?guī)蟱here子句

    • 保留表而刪除所有數(shù)據(jù)的時候用truncate


    9)觸發(fā)器的作用?

    觸發(fā)器是與表相關的數(shù)據(jù)庫對象,在滿足定義條件時觸發(fā),并執(zhí)行觸發(fā)器中定義的語句集合。觸發(fā)器的這種特性可以協(xié)助應用在數(shù)據(jù)庫端確保數(shù)據(jù)庫的完整性。


    10)數(shù)據(jù)庫的樂觀鎖和悲觀鎖是什么?

    數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的并發(fā)控制的任務是確保在多個事務同時存取數(shù)據(jù)庫中同一數(shù)據(jù)時不破壞事務的隔離性和統(tǒng)一性以及數(shù)據(jù)庫的統(tǒng)一性。

    樂觀并發(fā)控制(樂觀鎖)和悲觀并發(fā)控制(悲觀鎖)是并發(fā)控制主要采用的技術(shù)手段。

    • 悲觀鎖:假定會發(fā)生并發(fā)沖突,屏蔽一切可能違反數(shù)據(jù)完整性的操作

    悲觀鎖是一種利用數(shù)據(jù)庫內(nèi)部機制提供的鎖的方式,也就是對更新的數(shù)據(jù)加鎖,這樣在并發(fā)期間一旦有一個事務持有了數(shù)據(jù)庫記錄的鎖,其他的線程將不能再對數(shù)據(jù)進行更新了,這就是悲觀鎖的實現(xiàn)方式。

    MySQL InnoDB中使用悲觀鎖:

    要使用悲觀鎖,我們必須關閉mysql數(shù)據(jù)庫的自動提交屬性,因為MySQL默認使用autocommit模式,也就是說,當你執(zhí)行一個更新操作后,MySQL會立刻將結(jié)果進行提交。set autocommit=0;

    //0.開始事務 begin;/begin?work;/start?transaction;?(三者選一就可以) //1.查詢出商品信息 select?status?from?t_goods?where?id=1?for?update; //2.根據(jù)商品信息生成訂單 insert?into?t_orders?(id,goods_id)?values?(null,1); //3.修改商品status為2 update?t_goods?set?status=2; //4.提交事務 commit;/commit?work;

    上面的查詢語句中,我們使用了?select…for update?的方式,這樣就通過開啟排他鎖的方式實現(xiàn)了悲觀鎖。此時在t_goods表中,id為1的 那條數(shù)據(jù)就被我們鎖定了,其它的事務必須等本次事務提交之后才能執(zhí)行。這樣我們可以保證當前的數(shù)據(jù)不會被其它事務修改。

    上面我們提到,使用?select…for update?會把數(shù)據(jù)給鎖住,不過我們需要注意一些鎖的級別,MySQL InnoDB默認行級鎖。行級鎖都是基于索引的,如果一條SQL語句用不到索引是不會使用行級鎖的,會使用表級鎖把整張表鎖住,這點需要注意。

    優(yōu)點與不足:

    悲觀并發(fā)控制實際上是“先取鎖再訪問”的保守策略,為數(shù)據(jù)處理的安全提供了保證。但是在效率方面,處理加鎖的機制會讓數(shù)據(jù)庫產(chǎn)生額外的開銷,還有增加產(chǎn)生死鎖的機會;另外,在只讀型事務處理中由于不會產(chǎn)生沖突,也沒必要使用鎖,這樣做只能增加系統(tǒng)負載;還有會降低了并行性,一個事務如果鎖定了某行數(shù)據(jù),其他事務就必須等待該事務處理完才可以處理那行數(shù)

    • 樂觀鎖:假設不會發(fā)生并發(fā)沖突,只在提交操作時檢查是否違反數(shù)據(jù)完整性。

    樂觀鎖是一種不會阻塞其他線程并發(fā)的控制,它不會使用數(shù)據(jù)庫的鎖進行實現(xiàn),它的設計里面由于不阻塞其他線程,所以并不會引起線程頻繁掛起和恢復,這樣便能夠提高并發(fā)能力,所以也有人把它稱為非阻塞鎖。一般的實現(xiàn)樂觀鎖的方式就是記錄數(shù)據(jù)版本。

    數(shù)據(jù)版本,為數(shù)據(jù)增加的一個版本標識。當讀取數(shù)據(jù)時,將版本標識的值一同讀出,數(shù)據(jù)每更新一次,同時對版本標識進行更新。當我們提交更新的時候,判斷數(shù)據(jù)庫表對應記錄的當前版本信息與第一次取出來的版本標識進行比對,如果數(shù)據(jù)庫表當前版本號與第一次取出來的版本標識值相等,則予以更新,否則認為是過期數(shù)據(jù)。

    實現(xiàn)數(shù)據(jù)版本有兩種方式,第一種是使用版本號,第二種是使用時間戳。

    使用版本號實現(xiàn)樂觀鎖:

    使用版本號時,可以在數(shù)據(jù)初始化時指定一個版本號,每次對數(shù)據(jù)的更新操作都對版本號執(zhí)行+1操作。并判斷當前版本號是不是該數(shù)據(jù)的最新的版本號。

    1.查詢出商品信息 select?(status,status,version)?from?t_goods?where?id=#{id} 2.根據(jù)商品信息生成訂單 3.修改商品status為2 update?t_goods? set?status=2,version=version+1 where?id=#{id}?and?version=#{version};

    優(yōu)點與不足:

    樂觀并發(fā)控制相信事務之間的數(shù)據(jù)競爭(data race)的概率是比較小的,因此盡可能直接做下去,直到提交的時候才去鎖定,所以不會產(chǎn)生任何鎖和死鎖。但如果直接簡單這么做,還是有可能會遇到不可預期的結(jié)果,例如兩個事務都讀取了數(shù)據(jù)庫的某一行,經(jīng)過修改以后寫回數(shù)據(jù)庫,這時就遇到了問題。

    參考文章:深入理解樂觀鎖與悲觀鎖


    11)超鍵、候選鍵、主鍵、外鍵分別是什么?

    • 超鍵:在關系中能唯一標識元組的屬性集稱為關系模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。

    • 候選鍵(候選碼):是最小超鍵,即沒有冗余元素的超鍵。

    • 主鍵(主碼):數(shù)據(jù)庫表中對儲存數(shù)據(jù)對象予以唯一和完整標識的數(shù)據(jù)列或?qū)傩缘慕M合。一個數(shù)據(jù)列只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。

    • 外鍵:在一個表中存在的另一個表的主鍵稱此表的外鍵。

    候選碼和主碼:

    例子:郵寄地址(城市名,街道名,郵政編碼,單位名,收件人)

    • 它有兩個候選鍵:{城市名,街道名} 和 {街道名,郵政編碼}

    • 如果我選取{城市名,街道名}作為唯一標識實體的屬性,那么{城市名,街道名} 就是主碼(主鍵)


    12)SQL 約束有哪幾種?

    • NOT NULL: 用于控制字段的內(nèi)容一定不能為空(NULL)。

    • UNIQUE: 控件字段內(nèi)容不能重復,一個表允許有多個 Unique 約束。

    • PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復,但它在一個表只允許出現(xiàn)一個。

    • FOREIGN KEY: 用于預防破壞表之間連接的動作,也能防止非法數(shù)據(jù)插入外鍵列,因為它必須是它指向的那個表中的值之一。

    • CHECK: 用于控制字段的值范圍。


    13)MySQL存儲引擎中的MyISAM和InnoDB區(qū)別詳解

    在MySQL 5.5之前,MyISAM是mysql的默認數(shù)據(jù)庫引擎,其由早期的ISAM(Indexed Sequential Access Method:有索引的順序訪問方法)所改良。雖然MyISAM性能極佳,但卻有一個顯著的缺點:不支持事務處理。不過,MySQL也導入了另一種數(shù)據(jù)庫引擎InnoDB,以強化參考完整性與并發(fā)違規(guī)處理機制,后來就逐漸取代MyISAM。

    InnoDB是MySQL的數(shù)據(jù)庫引擎之一,其由Innobase oy公司所開發(fā),2006年五月由甲骨文公司并購。與傳統(tǒng)的ISAM、MyISAM相比,InnoDB的最大特色就是支持ACID兼容的事務功能,類似于PostgreSQL。目前InnoDB采用雙軌制授權(quán),一是GPL授權(quán),另一是專有軟件授權(quán)。具體地,MyISAM與InnoDB作為MySQL的兩大存儲引擎的差異主要包括:

    • 存儲結(jié)構(gòu):每個MyISAM在磁盤上存儲成三個文件:第一個文件的名字以表的名字開始,擴展名指出文件類型。.frm文件存儲表定義,數(shù)據(jù)文件的擴展名為.MYD (MYData),索引文件的擴展名是.MYI (MYIndex)。InnoDB所有的表都保存在同一個數(shù)據(jù)文件中(也可能是多個文件,或者是獨立的表空間文件),InnoDB表的大小只受限于操作系統(tǒng)文件的大小,一般為2GB。

    • 存儲空間:MyISAM可被壓縮,占據(jù)的存儲空間較小,支持靜態(tài)表、動態(tài)表、壓縮表三種不同的存儲格式。InnoDB需要更多的內(nèi)存和存儲,它會在主內(nèi)存中建立其專用的緩沖池用于高速緩沖數(shù)據(jù)和索引。

    • 可移植性、備份及恢復:MyISAM的數(shù)據(jù)是以文件的形式存儲,所以在跨平臺的數(shù)據(jù)轉(zhuǎn)移中會很方便,同時在備份和恢復時也可單獨針對某個表進行操作。InnoDB免費的方案可以是拷貝數(shù)據(jù)文件、備份 binlog,或者用 mysqldump,在數(shù)據(jù)量達到幾十G的時候就相對痛苦了。

    • 事務支持:MyISAM強調(diào)的是性能,每次查詢具有原子性,其執(zhí)行數(shù)度比InnoDB類型更快,但是不提供事務支持。InnoDB提供事務、外鍵等高級數(shù)據(jù)庫功能,具有事務提交、回滾和崩潰修復能力。

    • AUTO_INCREMENT:在MyISAM中,可以和其他字段一起建立聯(lián)合索引。引擎的自動增長列必須是索引,如果是組合索引,自動增長可以不是第一列,它可以根據(jù)前面幾列進行排序后遞增。InnoDB中必須包含只有該字段的索引,并且引擎的自動增長列必須是索引,如果是組合索引也必須是組合索引的第一列。

    • 表鎖差異:MyISAM只支持表級鎖,用戶在操作MyISAM表時,select、update、delete和insert語句都會給表自動加鎖,如果加鎖以后的表滿足insert并發(fā)的情況下,可以在表的尾部插入新的數(shù)據(jù)。InnoDB支持事務和行級鎖。行鎖大幅度提高了多用戶并發(fā)操作的新能,但是InnoDB的行鎖,只是在WHERE的主鍵是有效的,非主鍵的WHERE都會鎖全表的。

    • 全文索引:MyISAM支持 FULLTEXT類型的全文索引;InnoDB不支持FULLTEXT類型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。

    • 表主鍵:MyISAM允許沒有任何索引和主鍵的表存在,索引都是保存行的地址。對于InnoDB,如果沒有設定主鍵或者非空唯一索引,就會自動生成一個6字節(jié)的主鍵(用戶不可見),數(shù)據(jù)是主索引的一部分,附加索引保存的是主索引的值。

    • 表的具體行數(shù):MyISAM保存表的總行數(shù),select count() from table;會直接取出出該值;而InnoDB沒有保存表的總行數(shù),如果使用select count() from table;就會遍歷整個表,消耗相當大,但是在加了wehre條件后,myisam和innodb處理的方式都一樣。

    • CURD操作:在MyISAM中,如果執(zhí)行大量的SELECT,MyISAM是更好的選擇。對于InnoDB,如果你的數(shù)據(jù)執(zhí)行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表。DELETE從性能上InnoDB更優(yōu),但DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除,在innodb上如果要清空保存有大量數(shù)據(jù)的表,最好使用truncate table這個命令。

    • 外鍵:MyISAM不支持外鍵,而InnoDB支持外鍵。

    通過上述的分析,基本上可以考慮使用InnoDB來替代MyISAM引擎了,原因是InnoDB自身很多良好的特點,比如事務支持、存儲過程、視圖、行級鎖、外鍵等等。尤其在并發(fā)很多的情況下,相信InnoDB的表現(xiàn)肯定要比MyISAM強很多。另外,必須需要注意的是,任何一種表都不是萬能的,合適的才是最好的,才能最大的發(fā)揮MySQL的性能優(yōu)勢。如果是不復雜的、非關鍵的Web應用,還是可以繼續(xù)考慮MyISAM的,這個具體情況具體考慮。


    14)MyIASM和Innodb兩種引擎所使用的索引的數(shù)據(jù)結(jié)構(gòu)是什么?

    答案:都是B+樹!

    MyIASM引擎,B+樹的數(shù)據(jù)結(jié)構(gòu)中存儲的內(nèi)容實際上是實際數(shù)據(jù)的地址值。也就是說它的索引和實際數(shù)據(jù)是分開的,只不過使用索引指向了實際數(shù)據(jù)。這種索引的模式被稱為非聚集索引。

    Innodb引擎的索引的數(shù)據(jù)結(jié)構(gòu)也是B+樹,只不過數(shù)據(jù)結(jié)構(gòu)中存儲的都是實際的數(shù)據(jù),這種索引有被稱為聚集索引。


    15)varchar和char的區(qū)別

    char是一種固定長度的類型,varchar是一種可變長度的類型,例如:

    定義一個char[10]和varchar[10],如果存進去的是 'test',那么char所占的長度依然為10,除了字符 'test' 外,后面跟六個空格,varchar就立馬把長度變?yōu)?了,取數(shù)據(jù)的時候,char類型的要用trim()去掉多余的空格,而varchar是不需要的

    char的存取速度還是要比varchar要快得多,因為其長度固定,方便程序的存儲于查找

    char也為此付出的是空間的代價,因為其長度固定,所以難免會有多余的空格占位符占據(jù)空間,可謂是以空間換取時間效率。

    varchar是以空間效率為首位。

    char的存儲方式是:對英文字符(ASCII)占用1個字節(jié),對一個漢字占用兩個字節(jié)。

    varchar的存儲方式是:對每個英文字符占用2個字節(jié),漢字也占用2個字節(jié)。
    兩者的存儲數(shù)據(jù)都非unicode的字符數(shù)據(jù)。


    16)主鍵、自增主鍵、主鍵索引與唯一索引概念區(qū)別

  • 主鍵:指字段?唯一、不為空值?的列;

  • 主鍵索引:指的就是主鍵,主鍵是索引的一種,是唯一索引的特殊類型。創(chuàng)建主鍵的時候,數(shù)據(jù)庫默認會為主鍵創(chuàng)建一個唯一索引;

  • 自增主鍵:字段類型為數(shù)字、自增、并且是主鍵;

  • 唯一索引:索引列的值必須唯一,但允許有空值。主鍵是唯一索引,這樣說沒錯;但反過來說,唯一索引也是主鍵就錯誤了,因為唯一索引允許空值,主鍵不允許有空值,所以不能說唯一索引也是主鍵。


  • 17)主鍵就是聚集索引嗎?主鍵和索引有什么區(qū)別?

    主鍵是一種特殊的唯一性索引,其可以是聚集索引,也可以是非聚集索引。在SQLServer中,主鍵的創(chuàng)建必須依賴于索引,默認創(chuàng)建的是聚集索引,但也可以顯式指定為非聚集索引。InnoDB作為MySQL存儲引擎時,默認按照主鍵進行聚集,如果沒有定義主鍵,InnoDB會試著使用唯一的非空索引來代替。如果沒有這種索引,InnoDB就會定義隱藏的主鍵然后在上面進行聚集。所以,對于聚集索引來說,你創(chuàng)建主鍵的時候,自動就創(chuàng)建了主鍵的聚集索引。


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

    實踐中,MySQL的優(yōu)化主要涉及SQL語句及索引的優(yōu)化、數(shù)據(jù)表結(jié)構(gòu)的優(yōu)化、系統(tǒng)配置的優(yōu)化和硬件的優(yōu)化四個方面,如下圖所示:

    ?

    ⑴ SQL語句優(yōu)化:

    SQL語句的優(yōu)化主要包括三個問題,即如何發(fā)現(xiàn)有問題的SQL、如何分析SQL的執(zhí)行計劃以及如何優(yōu)化SQL,下面將逐一解釋。

    ① 怎么發(fā)現(xiàn)有問題的SQL?(通過MySQL慢查詢?nèi)罩緦τ行蕟栴}的SQL進行監(jiān)控)

    MySQL的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,它用來記錄在MySQL中響應時間超過閥值的語句,具體指運行時間超過long_query_time值的SQL,則會被記錄到慢查詢?nèi)罩局小ong_query_time的默認值為10,意思是運行10s以上的語句。慢查詢?nèi)罩镜南嚓P參數(shù)如下所示:

    ?

    通過MySQL的慢查詢?nèi)罩?#xff0c;我們可以查詢出執(zhí)行的次數(shù)多占用的時間長的SQL、可以通過pt_query_disgest(一種mysql慢日志分析工具)分析Rows examine(MySQL執(zhí)行器需要檢查的行數(shù))項去找出IO大的SQL以及發(fā)現(xiàn)未命中索引的SQL,對于這些SQL,都是我們優(yōu)化的對象。

    ② 通過explain查詢和分析SQL的執(zhí)行計劃:

    使用 EXPLAIN 關鍵字可以知道MySQL是如何處理你的SQL語句的,以便分析查詢語句或是表結(jié)構(gòu)的性能瓶頸。通過explain命令可以得到表的讀取順序、數(shù)據(jù)讀取操作的操作類型、哪些索引可以使用、哪些索引被實際使用、表之間的引用以及每張表有多少行被優(yōu)化器查詢等問題。當擴展列extra出現(xiàn)Using filesort和Using temporay,則往往表示SQL需要優(yōu)化了。

    ③ SQL語句的優(yōu)化:

    ⒈優(yōu)化insert語句:一次插入多值;

    ⒉應盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描;

    ⒊應盡量避免在 where 子句中對字段進行null值判斷,否則將導致引擎放棄使用索引而進行全表掃描;

    ⒋優(yōu)化嵌套查詢:子查詢可以被更有效率的連接(Join)替代;

    ⒌很多時候用 exists 代替 in 是一個好的選擇。

    ⒍選擇最有效率的表名順序:數(shù)據(jù)庫的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最后的表將被最先處理

    在FROM子句中包含多個表的情況下:

    • 如果三個表是完全無關系的話,將記錄和列名最少的表,寫在最后,然后依次類推

    • 也就是說:選擇記錄條數(shù)最少的表放在最后

    如果有3個以上的表連接查詢:

    • 如果三個表是有關系的話,將引用最多的表,放在最后,然后依次類推。

    • 也就是說:被其他表所引用的表放在最后

    ⒎用IN代替OR:

    select?*?from?emp?where?sal?=?1500?or?sal?=?3000?or?sal?=?800; select?*?from?emp?where?sal?in?(1500,3000,800);

    ⒏SELECT子句中避免使用*號:

    我們最開始接觸 SQL 的時候,“*” 號是可以獲取表中全部的字段數(shù)據(jù)的,但是它要通過查詢數(shù)據(jù)字典完成,這意味著將消耗更多的時間,而且使用 “*” 號寫出來的 SQL 語句也不夠直觀。


    ⑵ 索引優(yōu)化:

    建議在經(jīng)常作查詢選擇的字段、經(jīng)常作表連接的字段以及經(jīng)常出現(xiàn)在 order by、group by、distinct 后面的字段中建立索引。但必須注意以下幾種可能會引起索引失效的情形:

    • 以 “%(表示任意0個或多個字符)” 開頭的 LIKE 語句,模糊匹配;

    • OR語句前后沒有同時使用索引;

    • 數(shù)據(jù)類型出現(xiàn)隱式轉(zhuǎn)化(如varchar不加單引號的話可能會自動轉(zhuǎn)換為int型);

    • 對于多列索引,必須滿足最左匹配原則(eg,多列索引col1、col2和col3,則 索引生效的情形包括col1或col1,col2或col1,col2,col3)。


    ⑶ 數(shù)據(jù)庫表結(jié)構(gòu)的優(yōu)化:

    ① 選擇合適數(shù)據(jù)類型:

    • 使用較小的數(shù)據(jù)類型解決問題;

    • 使用簡單的數(shù)據(jù)類型(mysql處理int要比varchar容易);

    • 盡可能的使用not null 定義字段;

    • 盡量避免使用text類型,非用不可時最好考慮分表;

    ② 表的范式的優(yōu)化:

    一般情況下,表的設計應該遵循三大范式。

    ③ 表的垂直拆分:

    把含有多個列的表拆分成多個表,解決表寬度問題,具體包括以下幾種拆分手段:

    • 把不常用的字段單獨放在同一個表中;

    • 把大字段獨立放入一個表中;

    • 把經(jīng)常使用的字段放在一起;

    這樣做的好處是非常明顯的,具體包括:拆分后業(yè)務清晰,拆分規(guī)則明確、系統(tǒng)之間整合或擴展容易、數(shù)據(jù)維護簡單

    ④ 表的水平拆分:

    表的水平拆分用于解決數(shù)據(jù)表中數(shù)據(jù)過大的問題,水平拆分每一個表的結(jié)構(gòu)都是完全一致的。一般地,將數(shù)據(jù)平分到N張表中的常用方法包括以下兩種:

    • 對ID進行hash運算,如果要拆分成5個表,mod(id,5)取出0~4個值;

    • 針對不同的hashID將數(shù)據(jù)存入不同的表中;

    表的水平拆分會帶來一些問題和挑戰(zhàn),包括跨分區(qū)表的數(shù)據(jù)查詢、統(tǒng)計及后臺報表的操作等問題,但也帶來了一些切實的好處:

    • 表分割后可以降低在查詢時需要讀的數(shù)據(jù)和索引的頁數(shù),同時也降低了索引的層數(shù),提高查詢速度;

    • 表中的數(shù)據(jù)本來就有獨立性,例如表中分別記錄各個地區(qū)的數(shù)據(jù)或不同時期的數(shù)據(jù),特別是有些數(shù)據(jù)常用,而另外一些數(shù)據(jù)不常用。

    • 需要把數(shù)據(jù)存放到多個數(shù)據(jù)庫中,提高系統(tǒng)的總體可用性(分庫,雞蛋不能放在同一個籃子里)。


    ⑷ 系統(tǒng)配置的優(yōu)化:

    • 操作系統(tǒng)配置的優(yōu)化:增加TCP支持的隊列數(shù)

    • mysql配置文件優(yōu)化:Innodb緩存池設置(innodb_buffer_pool_size,推薦總內(nèi)存的75%)和緩存池的個數(shù)(innodb_buffer_pool_instances)


    ⑸ 硬件的優(yōu)化:

    • CPU:核心數(shù)多并且主頻高的

    • 內(nèi)存:增大內(nèi)存

    • 磁盤配置和選擇:磁盤性能

    總結(jié)

    以上是生活随笔為你收集整理的数据库常考面试知识点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    91丨精品丨蝌蚪丨白丝jk | 日日麻批40分钟视频免费观看 | 国产毛片久久久 | 精品国产伦一区二区三区观看方式 | 国产亚洲精品电影 | 国产又黄又猛又粗 | 热re99久久精品国产66热 | 国产中文字幕在线免费观看 | 奇米影视777四色米奇影院 | 亚洲成年人在线播放 | 成人久久精品 | 激情影音 | 国产免费亚洲 | 欧美性生活免费 | 国产成人333kkk | 又黄又爽又刺激 | 久久久影片 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 国产成人精品一区一区一区 | 在线观看欧美成人 | 亚洲高清色综合 | 狠狠操狠狠干天天操 | 一区在线观看视频 | 日韩成人免费电影 | 99精品在线免费观看 | 欧美少妇xxx | 麻豆高清免费国产一区 | 人人爽人人搞 | 一级c片 | 91视频麻豆 | 欧美国产一区在线 | av免费网站| 一区二区三区福利 | 亚洲春色综合另类校园电影 | 五月天伊人网 | 久久免费在线观看 | 黄污网站在线 | 日产中文字幕 | 亚洲精品乱码久久久一二三 | 日韩高清免费在线观看 | 91在线国产观看 | 免费成人av电影 | 成年人在线免费看片 | 国产精品久久久久久麻豆一区 | 在线精品在线 | 日本精品在线看 | 91精品999| 亚洲热久久 | 在线观看aa | 你操综合 | 国产在线欧美日韩 | 国产美女精品视频免费观看 | a在线免费观看视频 | 国产色影院 | 国产女做a爱免费视频 | 91中文字幕一区 | av一级片网站 | 亚洲va欧美va | 中文字幕在线有码 | 日本成人黄色片 | 久久福利剧场 | 亚洲精品97 | 久久久国产精品视频 | 久久精品www人人爽人人 | 亚洲国产视频直播 | 韩国av在线 | 在线国产黄色 | 国产亚洲综合在线 | 亚洲视频精品 | 欧美成人在线免费 | 日韩免费区| 91在线播放综合 | 91视频免费| 能在线观看的日韩av | 亚洲影院一区 | 91免费网 | 99久e精品热线免费 99国产精品久久久久久久久久 | 九九久久久久久久久激情 | 中文字幕丰满人伦在线 | 久久婷婷开心 | 91成版人在线观看入口 | 国偷自产视频一区二区久 | 日本免费一二三区 | 国产视频不卡 | 91久久国产综合精品女同国语 | 日韩一区二区三区高清免费看看 | 精品欧美乱码久久久久久 | 日本特黄一级 | 国产日产欧美在线观看 | 久久的色 | 中文字幕精品一区二区三区电影 | 色综合 久久精品 | 91视频成人免费 | 国产精品成人av久久 | 麻豆精品91 | 51精品国自产在线 | 免费精品在线 | 97av影院 | 91免费网 | 久久免费高清 | 天天操天天透 | 91九色视频观看 | 国产成人亚洲在线观看 | 国产精品69久久久久 | 国产一卡二卡在线 | 国产成人精品av在线 | 欧美精品小视频 | 在线免费观看视频一区二区三区 | 91在线精品播放 | 精品二区视频 | 人人舔人人爱 | 日韩一级理论片 | 九色精品免费永久在线 | 亚洲精品久久视频 | 97精品国产91久久久久久 | 精品人人爽 | 亚洲国产精品激情在线观看 | 91三级在线观看 | 最新超碰在线 | 国产精品久久久久久久久费观看 | 成年人av在线播放 | 激情综合亚洲精品 | 日本mv大片欧洲mv大片 | 国产欧美久久久精品影院 | 深爱激情开心 | 香蕉影院在线播放 | 午夜精品久久久久久 | 国产在线更新 | av在线免费播放网站 | 不卡国产视频 | 国产黄色观看 | 激情丁香婷婷 | 91免费在线播放 | 免费午夜视频在线观看 | 国产午夜三级一区二区三桃花影视 | 欧美中文字幕第一页 | 黄色福利视频网站 | 国产区精品在线 | 久久字幕精品一区 | 天天干,天天操,天天射 | 国产精品免费一区二区三区在线观看 | 国产精品一区二区av影院萌芽 | 国产裸体视频网站 | 久久视讯 | 91网在线观看 | 国产91粉嫩白浆在线观看 | 国产成人精品一区二区三区网站观看 | 中文字幕亚洲欧美 | 久久九九精品久久 | 天堂成人在线 | 久久中文字幕视频 | 亚洲国内精品 | 韩国av一区二区三区在线观看 | 成人国产电影在线观看 | 久久视频这里只有精品 | 成人免费观看在线视频 | 美女网站视频免费都是黄 | 天天操天天操天天操天天 | 免费日韩电影 | 视频三区 | 国产精品国产三级国产不产一地 | 天天操天天操天天操天天操天天操天天操 | 99久免费精品视频在线观看 | 麻豆视频在线观看免费 | 欧美成人精品欧美一级乱黄 | 国产一区二区久久久久 | 精品视频一区在线观看 | 九九涩涩av台湾日本热热 | a级国产片 | 欧美 高跟鞋交 xxxxhd | 人人狠| 久久综合久久综合久久综合 | 久久精品国产第一区二区三区 | 日本黄网站 | 黄色片网站大全 | 婷婷六月色 | 18pao国产成视频永久免费 | 国内精品久久久久久久久久久久 | 久久久精品一区二区三区 | 久久精品人| 欧美久久精品 | 国产资源在线免费观看 | 国产精品日韩欧美一区二区 | 久久久 激情 | 国产精品久久久久久吹潮天美传媒 | www.五月激情.com| 欧美另类美少妇69xxxx | 精品自拍sae8—视频 | 高潮久久久久久久久 | 成人久久电影 | 国内精品久久久久久久97牛牛 | 午夜久久视频 | 日韩艹 | 综合网伊人 | 丁香花在线观看视频在线 | 精品久久久久国产免费第一页 | 天堂av在线| 天天操天天射天天舔 | 久久爱影视i | 天天操天天摸天天射 | 亚洲传媒在线 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 丁香视频 | 欧美综合在线视频 | 久久久久久蜜av免费网站 | 日日夜夜婷婷 | 人成在线免费视频 | 日本精品一区二区三区在线播放视频 | 国产婷婷vvvv激情久 | 国产视频91在线 | 免费观看一级特黄欧美大片 | 国产精品入口久久 | 在线看91| 狠狠干在线| 免费在线视频一区二区 | 在线国产欧美 | 在线黄av| 日韩久久精品 | 亚洲va欧美va国产va黑人 | 99超碰在线观看 | 国产亚洲精品精品精品 | 久久人人爽人人爽人人 | 在线小视频你懂的 | 天天操 夜夜操 | 久草在线| 四虎成人精品永久免费av九九 | 国产在线中文字幕 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久男女视频 | 在线看片一区 | 国产精品久久久久久五月尺 | 一区二区网 | 亚洲综合色激情五月 | 亚洲综合最新在线 | 99久久99视频只有精品 | 日日天天av | 国产精品夜夜夜一区二区三区尤 | 97国产一区二区 | 亚洲一区二区天堂 | 麻豆精品91| 日韩av男人的天堂 | 国产视频精选 | 在线天堂日本 | 日韩精品网址 | 精品久久久久久久久久岛国gif | 欧美一级在线看 | 女人18精品一区二区三区 | 91精品国产91热久久久做人人 | 综合网伊人 | 欧美激情精品久久久久久变态 | 在线国产激情视频 | 国产日韩精品在线观看 | 天天色天天操综合网 | 国产免费一区二区三区最新 | 免费av在线网 | 国产视频在线免费 | 五月天久久久 | 久久高清毛片 | 久久久污 | 欧美日韩精品在线观看 | 四虎影视国产精品免费久久 | 五月天丁香综合 | 99r在线观看| 激情久久久久 | 日韩视频图片 | 日韩综合一区二区 | 欧美一区中文字幕 | 色综合网在线 | 韩国av电影在线观看 | 人人爱人人做人人爽 | 久久精品视频4 | 亚洲尺码电影av久久 | 激情综合五月天 | 欧美精品三级在线观看 | 亚洲狠狠婷婷综合久久久 | 国产又粗又猛又爽又黄的视频免费 | 国产成人精品一区二区三区在线观看 | 免费在线成人av电影 | 国产中文字幕视频在线 | 在线看av的网址 | 中文字幕色在线 | 一级黄色av | 日韩在线视频不卡 | 亚洲伊人天堂 | 精品国产视频在线观看 | 国产91免费在线 | 久久精品在线视频 | 中文字幕免费高清 | 99精品视频精品精品视频 | 久久96国产精品久久99漫画 | 日韩精品一区二区免费视频 | 免费日韩av片 | 亚洲欧美日韩不卡 | www.啪啪.com| 超碰电影在线观看 | 午夜美女福利 | 免费国产在线视频 | 精品成人国产 | 欧美视频在线二区 | 欧美日韩午夜爽爽 | 精品一区二区综合 | 亚洲国产成人av网 | 不卡av在线 | 日韩字幕在线观看 | 欧洲av不卡 | 色播五月激情五月 | 美女黄频视频大全 | 日韩欧美中文 | 日韩免费在线视频 | 又污又黄网站 | 黄色影院在线免费观看 | 69国产盗摄一区二区三区五区 | 精品国精品自拍自在线 | 久久精品国产亚洲aⅴ | 一区二区三区三区在线 | 国内免费久久久久久久久久久 | 日韩精品中文字幕在线播放 | 免费看国产a | 日日摸日日碰 | 亚洲最大av网 | 超碰久热| 精品视频123区在线观看 | 欧美日本啪啪无遮挡网站 | 亚洲综合视频在线播放 | 国产精品1024 | 国产69精品久久久久久久久久 | 伊人久操| 欧美一区二区日韩一区二区 | 亚洲永久在线 | 一区二区免费不卡在线 | 亚洲三级在线播放 | 国产成人精品福利 | 欧美日韩久久一区 | 久久精品视频在线播放 | 欧美日韩二区在线 | 日韩a级免费视频 | 欧美巨大荫蒂茸毛毛人妖 | 国产精品不卡在线 | 夜夜夜精品| 最近2019好看的中文字幕免费 | 亚洲国产网站 | 亚洲精品免费播放 | 中文字幕一区在线观看视频 | 九九免费精品视频 | 欧美日韩精品在线播放 | 爱爱一区 | 国产亚洲视频在线免费观看 | 国产99久久久精品 | 成人在线视频你懂的 | 久久天天躁狠狠躁亚洲综合公司 | 色婷婷五 | 久久精品99精品国产香蕉 | 精品美女在线观看 | 午夜在线看 | 亚洲无吗视频在线 | 免费福利在线播放 | 久久精品人人做人人综合老师 | 日日操天天操狠狠操 | 国产精品午夜免费福利视频 | 色婷婷成人网 | 亚洲欧美在线综合 | 日韩视频欧美视频 | 在线91视频 | 成 人 黄 色视频免费播放 | 蜜臀久久99静品久久久久久 | 久久久久久久久久影视 | 亚洲年轻女教师毛茸茸 | 国产高清亚洲 | 日本高清dvd | 亚洲三级精品 | 久久久久国产视频 | 日本高清免费中文字幕 | 日韩久久精品一区二区 | 免费看的黄色 | 人人爽夜夜爽 | 天天操夜夜操 | 91视频中文字幕 | 免费网站黄| 成人一级免费电影 | 欧美精品乱码久久久久久按摩 | 日韩高清免费在线观看 | 中文字幕在线看人 | 一区在线观看 | 亚洲综合网站在线观看 | 天天草综合 | www黄色软件| 日精品在线观看 | 精品国产乱码一区二区三区在线 | 99久久久久久久久 | 色偷偷男人的天堂av | 国产精品一区二区免费视频 | 中文字幕精品一区 | 欧美先锋影音 | 综合网天天射 | 天天插日日射 | 成人a级黄色片 | 国产在线一区二区三区播放 | 视频直播国产精品 | 国产999精品久久久久久绿帽 | 麻豆视频一区二区 | 久久久国产精品一区二区中文 | 91超级碰| 丝袜美女视频网站 | 五月黄色| 国产真实精品久久二三区 | 久久一区二区免费视频 | 国产精品成人免费精品自在线观看 | 中文字幕人成一区 | 不卡的一区二区三区 | 国产成人在线免费观看 | 热re99久久精品国产66热 | 国产一区视频在线播放 | 91最新在线 | 91精品久久香蕉国产线看观看 | 国产精品日韩在线播放 | 日韩天堂在线观看 | av综合 日韩 | 欧美一区二视频在线免费观看 | 久久人视频 | 国产久草在线观看 | 亚洲精品欧美专区 | 久草在线视频在线观看 | 国产亚洲人 | 国产视频精品在线 | 五月婷婷综合在线 | 久久精品91久久久久久再现 | 91大神dom调教在线观看 | 色婷婷综合成人av | 国产中文字幕在线播放 | 99热这里只有精品在线观看 | 欧美一级片免费 | 午夜久久精品 | 国产精品区免费视频 | 国产精品12345 | 欧美日韩国产成人 | 国产精品视频永久免费播放 | 国产人成精品一区二区三 | 日韩成人精品一区二区三区 | 免费在线观看一级片 | 日韩成人在线一区二区 | 亚洲精品麻豆视频 | 在线观看国产成人av片 | 天天干天天做天天爱 | 国产精品午夜久久 | 四虎成人精品永久免费av | 狠狠狠狠狠狠天天爱 | 国产中出在线观看 | 日本久久久亚洲精品 | www狠狠操 | 欧美一级片免费在线观看 | .精品久久久麻豆国产精品 亚洲va欧美 | 麻豆传媒视频在线播放 | 中文字幕精品一区久久久久 | 青草视频网 | 日韩久久视频 | 亚洲a资源 | 制服丝袜亚洲 | 99精品欧美一区二区三区黑人哦 | 国产色秀视频 | 婷婷黄色片 | www.黄色片网站 | 亚洲成人精品影院 | 日韩一区二区三区免费电影 | 国产精品久久久久久久久久ktv | 91精品久久久久久粉嫩 | 日韩网页 | 国产精品视频你懂的 | 色婷在线| 女人18片 | 丝袜制服天堂 | 四虎在线视频免费观看 | 在线看v片 | 亚洲精品国产自产拍在线观看 | 99视频精品免费视频 | 精品国产亚洲在线 | 国产精品一区二区三区免费视频 | 国产拍在线| 玖玖在线资源 | www.xxxx变态.com | 91在线播放视频 | 欧美一级片在线免费观看 | 国产精品1区2区在线观看 | 中文字幕在线视频一区二区三区 | 日韩色视频在线观看 | 久久躁日日躁aaaaxxxx | 国产天天爽 | 婷婷网站天天婷婷网站 | 国产一区二区播放 | 国产性天天综合网 | 久久综合久久综合这里只有精品 | 亚洲在线不卡 | 日韩一区二区免费在线观看 | 亚洲国产精品99久久久久久久久 | 精品久久久久久国产 | 精品久久一区二区三区 | 久久久人人爽 | 免费观看成年人视频 | 丁香国产视频 | 亚洲韩国一区二区三区 | 在线观看的a站 | 一区三区视频 | 欧美久久99 | 国产精品九九九九九九 | 91免费国产在线观看 | 久久国产一二区 | 久久精品视频日本 | 中文字幕在线观看三区 | 丁香午夜婷婷 | 亚洲日本va在线观看 | 中文字幕免费播放 | 成人在线观看资源 | 免费网站黄 | 国产精品自在线拍国产 | 日韩理论在线播放 | 在线免费观看黄 | 天天干天天干天天干天天干天天干天天干 | 久久视频这里有久久精品视频11 | 亚洲欧美日韩国产精品一区午夜 | 成人国产精品免费观看 | 久久国产精品久久久 | 亚洲精品午夜久久久久久久久久久 | 亚洲黄色激情小说 | 国产成人av电影在线 | 超碰夜夜| 91高清不卡 | 免费精品久久久 | 国产高清在线免费 | 久久精品电影院 | 碰超在线97人人 | 欧美午夜理伦三级在线观看 | 欧美国产日韩激情 | 天天曰夜夜爽 | 国产91电影在线观看 | 色伊人网 | 激情综合网在线观看 | 亚洲精品在线免费观看视频 | 中文字幕免费一区 | 日本一区二区三区免费观看 | 人成午夜视频 | 美女黄频在线观看 | 91九色蝌蚪视频在线 | 日韩黄色免费看 | 国产黄a三级三级三级三级三级 | 色婷婷国产精品 | 一区二区成人国产精品 | 色com| 在线免费视频一区 | 亚洲精品一区二区在线观看 | 国产精品9999 | 久久99亚洲热视 | 久久视频免费在线 | 久久国产a| 亚洲精品国产精品国产 | 中文字幕中文中文字幕 | 在线亚洲精品 | 亚洲高清av在线 | av免费黄色| 久久精品一区二区三区四区 | 国产成人一区二区三区影院在线 | 亚洲三级视频 | 久久免费电影网 | 国产精品自产拍在线观看网站 | 成人小电影在线看 | 日本大片免费观看在线 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产专区一 | 中文字幕电影一区 | 久久精品亚洲精品国产欧美 | 免费看色视频 | 久久欧美精品 | 狠狠色丁香久久婷婷综合五月 | 日日草视频 | 中文字幕在线免费观看视频 | 少妇bbw搡bbbb搡bbb | 成人a视频在线观看 | 中文字幕婷婷 | 久久精品视 | 日日夜夜操av | 最近免费中文字幕mv在线视频3 | 亚洲欧美一区二区三区孕妇写真 | 免费观看一区二区三区视频 | 精品国产一区二区三区在线观看 | 日韩免费播放 | 色婷婷综合久久久久 | 欧美色图视频一区 | 精品国产视频在线观看 | 久碰视频在线观看 | 97成人精品区在线播放 | 五月婷婷欧美 | 中文字幕一区二区在线观看 | 国产又粗又猛又爽 | 国产 精品 资源 | 国产精品一区二区免费视频 | a成人在线| 欧美久久久久久久久久久久久 | 日日夜夜91 | 天天射天天干天天 | 日韩欧美在线一区二区 | 色吊丝在线永久观看最新版本 | 日韩欧美国产免费播放 | 亚洲一区二区三区四区在线视频 | 日日操日日插 | 麻豆视频在线 | 国产精品18久久久久久久久久久久 | 一区二区视频电影在线观看 | 97干com| 日韩a欧美| 最近日韩中文字幕中文 | 亚洲一级黄色片 | 99久久精品国产免费看不卡 | 一区二区国产精品 | 色人久久 | 亚洲涩涩网站 | 91精品国产92久久久久 | 日批视频 | 日韩精品在线看 | 国产精品久久久久久久久久久久 | 亚洲国产成人高清精品 | 国产精品网在线观看 | 日韩一级电影网站 | 91免费在线看片 | 97在线看| av国产网站| 蜜桃视频成人在线观看 | 中文免费观看 | 亚洲六月丁香色婷婷综合久久 | 91日韩在线视频 | 国产一区二区在线免费 | 久草免费在线 | 成人av网址大全 | 亚洲a在线观看 | 久久欧美在线电影 | 免费人成在线观看网站 | 中文字幕免费高清av | 中文字幕在线观看视频一区二区三区 | 不卡视频在线 | 高清不卡一区二区在线 | 亚洲色五月 | 国产一区二区精品久久 | 91成品人影院 | 亚洲黄色成人av | 少妇做爰k8经典 | 久久精品国产一区 | av免费黄色 | 日韩免费一区二区在线观看 | 国产精品欧美日韩在线观看 | 国产精品激情在线观看 | www.久久色| 欧美日韩免费在线视频 | 五月天最新网址 | 国产一区二区播放 | 最近中文字幕免费av | 免费在线观看av不卡 | 国产精品久久久久久电影 | 在线黄频 | 精品久久久成人 | 国产老太婆免费交性大片 | 亚洲国产精久久久久久久 | 亚洲特级毛片 | 在线国产中文 | 久久超碰在线 | 久久福利| 日韩一区在线免费观看 | 日日天天干 | 特级西西444www大胆高清无视频 | 久久久久国产精品午夜一区 | 91麻豆.com | 国产99久久久久 | 视频在线播放国产 | 九九视频网站 | 久久99精品国产91久久来源 | 91av在线免费观看 | 免费视频一二三区 | 久久九九免费 | 在线观看免费版高清版 | 狠狠干婷婷 | 久保带人 | 久久精品视频18 | 精品国产一二三四区 | 99久热在线精品视频观看 | 韩国一区二区三区在线观看 | 久久一区国产 | 亚洲码国产日韩欧美高潮在线播放 | 黄色软件视频网站 | 国产午夜在线观看 | 日本高清久久久 | 亚洲精品午夜久久久久久久久久久 | 亚洲一级二级三级 | 亚洲国产高清在线观看视频 | 亚洲91中文字幕无线码三区 | 欧美成人精品欧美一级乱 | 韩日电影在线免费看 | 国产xvideos免费视频播放 | 亚洲精品久久久久久中文传媒 | 免费a网站| 综合网伊人 | 成人黄色在线观看视频 | 亚洲国产999 | 国产99黄| 精品国产电影一区 | 国产精品专区h在线观看 | а天堂中文最新一区二区三区 | 九九免费在线观看视频 | 九九在线高清精品视频 | 久久久精品午夜 | 色综合国产 | 久久精品一区二区三区中文字幕 | 国产成人精品一区二区在线 | 日本三级大片 | 国内精品久久久久久久97牛牛 | 国产 日韩 中文字幕 | av色综合 | 黄色成人免费电影 | 国产精品久久久久一区二区三区 | 国产美女免费看 | 在线中文视频 | 日韩欧美专区 | 国产精品一区二区白浆 | 久久男人影院 | 中文字幕在线观看第二页 | 2021av在线| 亚洲 综合 激情 | 国产欧美精品一区二区三区四区 | 日日久视频 | 免费在线黄 | 韩日电影在线观看 | 在线视频久久 | 在线看的av网站 | 成年人免费在线观看网站 | 美女黄频视频大全 | 人人射人人射 | 中文字幕在线观看免费高清完整版 | 亚洲午夜久久久久 | 激情久久久久久久久久久久久久久久 | 久久免费视频在线观看 | 国产一区二区在线免费观看 | 精品欧美日韩 | 四虎最新入口 | 国产精品18久久久久久首页狼 | 国产69久久精品成人看 | av免费黄色 | 国产成人久久精品77777 | 18岁免费看片 | 久久av免费| 黄色tv视频 | 亚洲精品一区二区在线观看 | 日韩精品视频网站 | 黄色一级大片免费看 | 久久99久久精品国产 | 超碰免费在线公开 | 高清视频一区二区三区 | 国产成人一区二区三区电影 | 久久国产精品视频免费看 | www久久 | 五月婷在线播放 | 日韩高清精品免费观看 | av天天色 | 国产亚洲视频中文字幕视频 | 亚洲国产激情 | a成人在线 | 91在线成人| 日日成人网 | 在线 精品 国产 | 美女视频黄免费 | 久久成电影 | 人人爽人人爽人人 | 日韩av一区二区三区 | 国产小视频福利在线 | 国产在线一卡 | 久久av一区二区三区亚洲 | 伊人天堂久久 | 在线看片一区 | 婷婷色av | 国产手机视频精品 | 国产一级精品视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 人人爱人人做人人爽 | 日韩国产高清在线 | 亚洲一区黄色 | 欧美高清视频不卡网 | 成人在线黄色电影 | 日本在线观看视频一区 | 日韩在线在线 | 国产一区二区在线播放视频 | 天天爽人人爽 | 在线观看aa| 亚洲九九 | 中文字幕日韩伦理 | 五月婷婷开心 | 日本特黄一级片 | 日日操网站 | 国产精品一区免费看8c0m | 久久9999久久 | 精品国产免费人成在线观看 | 国产视频一区二区在线观看 | 久草在线| 日韩av片无码一区二区不卡电影 | 久久激情小说 | 九九热视频在线播放 | 欧美成人精品欧美一级乱 | 美女免费视频一区 | 国产老妇av | 最新av在线网站 | 香蕉网在线观看 | 亚洲一区二区黄色 | 97超碰资源站 | 久草电影在线观看 | 日韩欧美高清视频在线观看 | 五月天久久综合网 | 黄色毛片视频免费 | 亚洲h在线播放在线观看h | 免费看的国产视频网站 | 国产精品成人在线观看 | 国产精品欧美激情在线观看 | 日本性久久| 国产无套视频 | 最近中文字幕高清字幕免费mv | 日韩精品亚洲专区在线观看 | 天天干天天干天天干天天干天天干天天干 | 国产精品免费久久久久影院仙踪林 | 97超碰成人在线 | 欧美日韩亚洲在线观看 | 人人草在线视频 | 久久99亚洲精品 | 丁香花在线视频观看免费 | 一级黄色a视频 | 久久精品欧美一区二区三区麻豆 | 日本中文字幕网址 | 成人av免费在线观看 | 日韩激情第一页 | 欧美成人h版在线观看 | 黄色影院在线免费观看 | 91精品一区二区三区久久久久久 | 伊人天天色 | 亚洲免费资源 | 最近日本中文字幕a | 香蕉97视频观看在线观看 | 91豆花在线观看 | 亚洲精品玖玖玖av在线看 | 国产不卡免费视频 | 欧美日韩成人 | 在线观看视频国产 | 天天干天天爽 | 天天在线操 | 三级午夜片 | 在线黄色免费av | 免费av片在线 | 91精品国自产在线观看 | 久久国产精品99久久久久久丝袜 | 久久久久亚洲精品国产 | 激情五月看片 | 丁香婷婷激情国产高清秒播 | 免费看精品久久片 | 日韩在线观看av | 天天做天天射 | 国产在线播放一区 | 久久神马影院 | 国产精品 中文在线 | 国产精品女同一区二区三区久久夜 | 日韩综合一区二区 | 日日干av | 黄色国产在线观看 | 夜夜躁日日躁狠狠躁 | 欧美精品中文在线免费观看 | 久久66热这里只有精品 | 国内精品国产三级国产aⅴ久 | 99久久精品国产一区二区成人 | 日韩视频一区二区 | 中文字幕在线久一本久 | 永久免费的av电影 | 中文字幕一区二区三 | 福利视频网址 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 精品久久久99 | 超碰在线免费97 | 中文字幕乱码电影 | a视频在线 | 欧美一级黄色网 | 欧美高清成人 | 天天爽天天爽天天爽 | 色哟哟国产精品 | 国产亚洲精品久久久久久无几年桃 | 日本精品免费看 | 亚洲午夜精 | 美女亚洲精品 | 亚洲国产三级在线 | 中文字幕一二三区 | 婷婷亚洲综合五月天小说 | 午夜精选视频 | 亚洲精品综合久久 | 三级黄色在线观看 | 国产传媒一区在线 | 欧美一级日韩免费不卡 | www成人精品 | 黄色精品一区 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 天天射天天干天天操 | 三级av在线免费观看 | 久草网在线 | 香蕉影院在线观看 | 日韩在线短视频 | 91高清完整版在线观看 | 欧美成人久久 | 亚洲专区 国产精品 | 久久久久久久久久久久影院 | 免费在线观看国产精品 | 国产福利久久 | av免费片| 一区二区三区动漫 | 久久久久国产精品一区二区 | 国产一级片在线播放 | 久久久久五月天 | 中文字幕资源在线观看 | 久久官网 | 五月婷婷操 | 国产又粗又猛又爽又黄的视频先 | 午夜精品视频一区二区三区在线看 | 国产色婷婷精品综合在线手机播放 | 五月激情综合婷婷 | 91大神电影| 日韩一级片观看 | 日日干综合 | 久一网站 | 日本成人黄色片 | 99久久久国产免费 | 久草视频免费在线播放 | 好看av在线 | 久久成年人网站 | 午夜精品三区 | 97**国产露脸精品国产 | 久久久久久久久久久久影院 | 日韩精品在线观看视频 | 免费日韩一级片 | 亚洲国产日韩一区 | www.久热 | 在线观看a视频 | 国产精品一区久久久久 | 国产精品一区二区三区99 | 国产成人一区二区精品非洲 | 2020天天干天天操 | 激情网站免费观看 | 久久99精品国产99久久6尤 | 中文字幕日本特黄aa毛片 | 天天综合色天天综合 | 欧亚日韩精品一区二区在线 | 四虎成人精品在永久免费 | 国产a网站 | 99精品在线免费视频 | 久久精品视频18 | 日韩免费三级 | 日本公妇色中文字幕 | 久久久久欠精品国产毛片国产毛生 | 日日操天天操狠狠操 | 91亚洲精品在线 | 欧亚日韩精品一区二区在线 | 欧洲在线免费视频 | 黄色特级片 | 欧美日韩视频观看 | 中文字幕乱码电影 | 亚洲成人网av | 在线观看国产日韩欧美 | 国产一区二区免费看 | 婷婷网站天天婷婷网站 | 国产高清久久久久 | 中文字幕刺激在线 | 在线观看一区 | 国产精品久久久久久久久久久久午夜 | 色香蕉网 | 天天躁日日躁狠狠躁 | 日韩三级视频 | 99久久国产免费免费 | 成人av高清 | 日韩欧美一区二区三区免费观看 | 在线免费观看黄色小说 | 国产韩国精品一区二区三区 | 精品99在线观看 | 国产美女精品人人做人人爽 | 亚洲国产视频在线 | 国产视频2 | 国内精品久久天天躁人人爽 | 午夜av色| 五月婷婷六月丁香在线观看 | 成人亚洲欧美 | 91视频这里只有精品 | 欧美日韩亚洲一 | 视频在线日韩 | 91久草视频 | 国产成人一区二区三区电影 | 久久国产精品免费看 | 99草视频 | 久久精品一区二区 | 青草视频在线 | 日韩在线电影一区 | 在线视频 亚洲 | 国产精品免费小视频 | 在线观看免费成人 | 日韩视频一区二区在线观看 | 亚洲黄色网络 |