国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

「Python 面試」第五次更新

zhunjiee / 3355人閱讀

摘要:也就是說當使用字符型存儲數據后,該數據轉換為二進制時的長度超過了位,那么該數據將不會完整存儲,會丟失一部分數據。

閱讀本文大約需要 8 分鐘。
寫在前面

數據庫打算只寫 MySQL,Redis 兩部分,不會很細,主要以面試題為主。這次寫的是 MySQL 篇。

1.說一下 char、varchar 、text 的區別

這里先介紹一下數據庫的概念,數據庫是一種數據結構,內含多種算法,幫助我們將數據以最優化的方式存儲在計算機中,也可以幫助我們快速找到存儲的數據。

數據最終存儲在計算機中都是以「二進制」的方式存儲。比如 4,存儲在計算機中其實是以 0100 的方式存儲。比如 A,存儲在計算中是以 0100 0001 的方式存儲。

char:定長字符型,最大可存儲 255 (2 的 8 次方)個字節長度,可以理解成最大可以存儲 255 個字符。在計算機中以 8 位二進制的方式存儲。

使用char類型存儲數據時,假設存儲的數據是 4,4 在計算機中存儲的結果是 0000 0100,意味著使用定長字符型char,不管你存儲的值是多少位,最終在計算機里都是以 8 位二進制的方式存儲,不滿 8 位,前面補 0。超過 8 位,超出的部分會被去除。

也就是說當使用char字符型存儲數據后,該數據轉換為二進制時的長度超過了 8 位,那么該數據將不會完整存儲,會「丟失」一部分數據。

varchar:不定長字符型,最大可存儲 65535(2 的 16 次方) 個字節長度,在計算機中以 16位 二進制的方式存儲。

它與char不同的地方在于,當字符長度在 0-255 以內時,會在后面添加一個字節,超過 255 時,添加兩個字節。同樣的,當超過最大存儲長度后,也會丟失一部分數據。

text:長文本數據類型,最大可存儲 65555 個字節長度,不能指定長度,也就是說不支持text(num)

但是該類型盡量不要使用,因為text類型數據在檢索中,不會使用索引,而是使用全局搜索,這會產生臨時表,使得檢索時間變長,不推薦使用。

由于charvarchar的特性,在實際使用當中,如果該數據是經常會發生變化、經常使用的,那么推薦使用char類型,因為 MySQL 在對數據進行排序時,會根據該數據的長度來排,固定長度的char類型會提供更高的性能。但是由于固定長度的特性,在存儲短數據時,一定程度上也會造成資源浪費,算是一個雙刃劍。

2. varchar(100)中的 100 有什么意義

100 只是在呈現角度上定義的,比如該數據有 120 個字符,那么你在查詢該數據時,看到的只有 100 個。但是如果在定義時,添加了UNSIGNED ZEROFILL屬性,那么這將改變該類型的最大存儲長度。

同樣的,在實際使用當中,varchar(num)里的值不需要定義的特別長,只要夠用就行,具體原因上面有提,這里不再贅述。

3. 說一說 DROP、DELETE、TRUNCATE 的區別

DORP:非事務操作,徹底刪除一張表,無法反悔恢復。

DELETE:事務操作,刪除表里的一行或多行數據,如果反悔或是誤刪,可以通過「事務回滾」恢復該表。不會影響該表下的view或索引。

TRUNCATE:非事務操作,刪除表里的某行數據,或是刪除整張表的數據(表依然存在,只是成了一張空表)。無法反悔恢復,并且會將該表下的view或索引重置。

執行速度:DROP > TRUNCATE > DELETE。

4. 說一說 MySQL 三范式

第一范式:表中的字段只能表達一種意思,不能模棱兩可。

第二范式:表必須含有一個唯一主鍵來標識這張表。

第三范式:表中的字段不能互相依賴。

5. 說一說 MySQL 中如何分區、分表

Scale Out(垂直切分)

Scale Up(橫向拆分)

這里有篇文章值得看一看。MySQL 分區、分表

6. 了解索引嗎

如果把數據庫當做一本書的話, 那么索引就是書的「目錄頁」,通過目錄,我們可以快速定位查找內容,同樣的,目錄頁在書中也占了一頁紙,所以索引是一個數據結構,也要占據數據庫物理內存。

索引分為 4 種類型:普通索引、唯一索引、主鍵索引和全文索引(MyISAM 專有)。

索引的創建規則:經常使用的字段名,和出現在 where 后面的字段名,建議為它們創建索引,索引要遵循最左前綴原則(最能體現該索引特征,也就是常用的字段放最左邊)。

索引的原理:可以看看這篇文章。索引

索引的使用場景:中等、大量數據時,使用索引效率會非常高,小型數據不建議使用索引,沒有全局搜索來的快。

索引的作用:索引可以提高查詢速度。但是索引會增加數據庫存儲額外開銷。索引會將數據庫查詢時的隨機 I/O 變成順序 I/O,減少服務器排序操作,和臨時表的開銷。

7. 說一下常用的 MySQL 優化手段

使用EXPLAIN查看 SQL 執行計劃,幫助自己查看哪些地方可以優化。

杜絕使用 SELECT * FROM xxx 這種查詢語句,需要什么就查什么。

盡量不要使用text這種類型,這會使得數據查詢該字段時,創建臨時表。

明確知道查詢數據結果大概有幾行時,使用LIMIT,為查詢結果限制顯示頁數。

避免使用 MySQL 的內置函數。

盡量使用 EXISTSBETWEEN代替IN

避免在 WHERE中使用表達式操作,這會使得 MySQL 放棄使用索引查詢。

盡量使用小表驅動大表(從小的表中,查找跟大表中有關系的數據),可以減少 CPU 運算次數,以及 I/O 總量。

盡量使用INNER JOIN而不是LEFT JOIN,因為前者默認使用小表驅動大表。

索引要遵循最左前綴法則。

避免使用模糊查詢LIKE

避免設置字段NULL屬性,在對NULL進行判斷時,會使得 MySQL 放棄使用索引。

8. InnoDB 和 MyISAM 的區別

InnoDB 支持外鍵,MyISAM 不支持。

MyISAM 擁有全文索引,InnoDB 沒有。

數據庫崩潰后,InnoDB 可以安全恢復,而 MyISAM 不可以。

InnoDB 擁有事務,而 MyISAM 沒有。

InnoDB 擁有行鎖,而 MyISAM 擁有表鎖。

MyISAM 計算 COUNT(*)時,速度遠高于 InnoDB。

9.什么是事務

InnoDB 引擎下,MySQL 支持事務操作,事務擁有以下幾個特點:

原子性

可靠性

穩定性

隔離性

使用事務的操作,要么執行,要么不執行,只有一個結果,但是事務可以回滾,也就是撤回操作。

10.說一下悲觀鎖、樂觀鎖

InnoDB 引擎下的 MySQL 在處理高并發時,會對 MySQL 數據庫添加鎖機制,以此完成并發的要求,并保證數據的完整性,可靠性。

悲觀鎖是 MySQL 為數據庫添加行鎖,強行為多個事務排序,阻塞事務運行,解決事務之間的沖突問題,但是事務之間有可能出現長時間等待,且開鎖、解鎖需要額外的數據庫資源消耗。所以要謹慎使用。

樂觀鎖沒有鎖機制,但是引入了版本號控制,在高并發時,數據庫在事務提交之前會進行版本號校驗,如果版本后前后不一致,說明此刻有其他事務正在操作,那么本次事務重新操作。

版本號的好處在于沒有鎖的開銷,并且只在事務最后提交更改時進行判斷,但是也要考慮重新執行的代價是否過大。

總的來說,高并發下,讀操作多的時候,使用樂觀鎖,寫的操作時,使用悲觀鎖。

未更完,下次更新補上。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/45173.html

相關文章

  • 2021-11-28五次組會

    摘要:第五次組會這次組會我主要講了,和的第一個問題。老師要我們搞明白的問題怎么識別擁塞流怎么識別擁塞流搞清楚怎么識別的兩篇文章方法不同。 2021-11-28第五次組會 ...

    不知名網友 評論0 收藏0
  • 渣渣為什么要看 ElasticSearch 源碼?

    摘要:當時自己在本地測試搭建集群后,給分配了另外一個任務就是去了解中的自帶分詞英文分詞中文分詞的相同與差異以及自己建立分詞需要注意的點。還有就是官網的文檔了,非常非常詳細,還有,版本的是有中文的官方文檔,可以湊合著看。 前提 人工智能、大數據快速發展的今天,對于 TB 甚至 PB 級大數據的快速檢索已然成為剛需,大型企業早已淹沒在系統生成的浩瀚數據流當中。大數據技術業已集中在如何存儲和處理這...

    Cciradih 評論0 收藏0
  • [譯]Python面試中8個必考問題

    摘要:因此,當任何由返回的函數被調用時,的值將在附近的范圍進行查找。下面是解決這一問題的一些方法。另外一個解決方案就是創造一個閉包,利用默認函數立即綁定。當缺失時,執行類,字典的實例將自動實例化這個數列。 1、下面這段代碼的輸出結果是什么?請解釋。 def extendList(val, list=[]): list.append(val) return list list...

    warmcheng 評論0 收藏0
  • Promise對象

    摘要:對比回調函數和暫時不管是什么,先看一下下面的代碼,看一看的好處。回調函數執行一次首先,定義一個回調函數,調用一次,看看這個代碼的寫法。上面的代碼中,在方法中需要傳遞兩個回調函數,這樣看著會有點亂。 對比回調函數和Promise 暫時不管Promise是什么,先看一下下面的代碼,看一看Promise的好處。需要特別說明的是,在這個對比的中,Promise和回調都沒有考慮存在異常的情況。 ...

    琛h。 評論0 收藏0

發表評論

0條評論

zhunjiee

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<