數據庫基礎知識彙總!

主流的數據庫軟件都有哪些?開原可以跨平臺的數據庫都有哪些?

甲骨文:orcale

IBM:DB2

微軟:SQL server

開原的可以跨平臺的:

Mysql:開源切跨平臺;           Orcale   DB2:跨平臺不開源

SQL server  :不跨平臺,不開源;

mysql的服務進程叫什麼名字?端口是多少? 默認數據庫的目錄?

進程名:mysqld           端口:3306             默認目錄:/var/lib/mysql

mysql默認的三個庫名叫什麼名字?哪個庫的數據不佔磁盤空間?

mysql  ,test   , information_schema

information_schema:不佔磁盤空間,存在內存裏面。

請列出mysql的常用數據類型?寫出定義這些數據類型所定義的關鍵字?

數值類型:int (整數性)、float (浮點型)

玫舉類型:set 、  enum

字符類型:char、varchar

日期時間類型:time、year、datetime

索引的優點和缺點?默認保存索引信息的是哪個文件?

優點:索引像一本書的目錄,可以加快查詢的速度;

缺點:會降低插入、更新表記錄數據的速度;

索引信息默認保存在表名.MYI的文件中。

請簡述在表中創建外鍵字段要滿足哪些條件?

1.表類型必須都是Innodb存儲引擎;

2.表的外鍵字段的類型要明確匹配;

3.被參照的字段要有明確的索引。

簡述mysql的結構體系?每個組件都有什麼作用?

連接池:內存檢查,緩存檢查,進程數的限制

SQL接口:用戶通過sql客戶端發來的命令,由sql接口接收,執行sql操作。(DML操作語言:查詢,修改,升級數據。DDL數據操作語言:創建新的庫,新的索引,創建新的用戶);存儲過程,視圖觸發器。

分析器:分析數據庫的查詢語句、數據處理、對象的訪問權限;

優化器:優化訪問路徑,生成執行樹;

緩存緩衝器:查詢結果的緩存;

存儲引擎:用來管理存儲的文件系統,講邏輯結構轉化爲物理結構的程序,不同的存儲引擎有不同的存儲方式和功能;

管理工具:負責數據的備份,回覆,安全,移植,集羣,這些管理用具一般和文件系統打交道,不和mysql-server打交道,都是通過命令去執行;

物理存儲設備(文件系統)。

mysql數據庫訪問的執行過程?

1.客戶端發起請求                              2.服務器開啓線程相應客戶端的請求

3.客戶端發起sql查詢語句          

4.緩存查詢,先記錄sql語句,查看是否有緩存,有緩存直接在緩存提出,如果緩存沒有則進入分析器                    

5.分析器:進行分析sql命令是否正確,將客戶的命令進行切換,將每個詞用空格隔開,獲得用戶要查詢的表,內容,用戶權限

6.優化器:執行路徑的選擇,生成執行樹。

7.存儲引擎:管理存儲的文件系統;不同的存儲引擎有不同的功能和存儲方式。

簡述mysql數據庫中查詢,插入,更新,刪除表記錄的指令格式?

插入記錄的指令格式:insert    into   表名(字段名)    values(key值)

查詢記錄的指令格式:select    字段名    from    表名      where    條件

更新表記錄的指令格式:update   表名    set    字段=更新的key值;

刪除表記錄的指令格式:delete   from    表名   where    條件

簡述用戶授權命令的格式?

grant    權限     on   庫.表      to     用戶名@訪問地址       identified   by   密碼    with   grant   option(是否給用戶授權的權限);

簡述mysqldump  備份數據庫時庫名的表示方式?

--all-database :表示所有庫       或     -A

數據庫名    :表示單個庫

數據庫名.表名:表示單個表

-B  數據庫1,數據庫2,.... :表示備份多個庫

什麼是mysql集羣?

mysql集羣是一個無共享的,分佈式節點架構的存儲方案。

建造集羣的目的是:提高數據的容錯性和高可用性能。

mysql集羣和mysql主從的區別?

集羣:包含成員,消息,冗餘,故障轉移等功能;

主從:也可以理解爲數據的複製,也就是一個服務器想另一個服務器發送消息的功能。

mysql集羣的特點?

是爲了實現最高性能,達到高可用性和冗餘等目標。主庫對從庫進行數據複製。數據複製採用的是同步機制,主庫數據同步到其他從庫數據節點上,數據在多個數據節點保存。

mysql集羣有一些創建高可用系統的專用功能,主要包括哪些?

節點回復、日誌、檢查點、系統恢復、熱備份恢復、無單點故障、故障轉移,分區、聯機操作。

mysql中myisam和innodb的區別?

存儲限制:             myisam支持256G、                   innodb支持64G

事務:                    myisam不支持事務                     innodb支持事務

索引:                    兩者都支持

鎖粒度:                 myisam支持標級鎖                     innodb支持行級鎖

數據壓縮:             myisam支持數據壓縮                 innodb不支持數據壓縮

外鍵:                   myisam不支持外鍵                      innodb支持外鍵

什麼是讀寫分離?

讀寫分離就是讓主庫處理事務性查詢,從庫處理select查詢。數據庫複製被用來把事務性查詢導致的數據變更同步到從庫,當然,主庫也可以select查詢。

讀寫分離最大的作用就是緩解服務器的壓力。

讀寫分離的好處都有哪些?

增加冗餘;            

緩解服務器的壓力;增加機器的處理能力;

對於讀應用較多的,應用讀寫分離是最好的,可以確保寫的服務器壓力更小,而讀的服務器又可以接受點時間上的延遲。

 讀寫分離提高性能的原因?

1.物理服務器增加;負荷增加;

2.主庫和從庫只負責自己的寫和讀操作,極大的緩解了X鎖和S鎖;

3.從庫可以配置爲myisam引擎,提高讀的性能及節省系統開銷;

4.從庫同步主庫的數據和主庫直接寫還是有區別的,從庫是通過主庫發來的binlog來同步的,但是呢,區別在於主庫向從庫發送binlog是異步的,所以同步數據也是異步的。

5.讀寫分離適用於讀的操作應用較多的場景,如果只有一臺服務器,當select很多時,update和delete會被select的訪問堵塞,這時就需要等待select結束,併發性能不高;當讀和寫比例相近時,可以設置成互爲主從。

6.分攤讀寫,這個就是拿機器數量去換性能。

7.增加冗餘,提高容錯,當主故障時,可以迅速地把從切換爲主來使用。

char和varchar的區別?

char:是定長變量                             varchar:是可變長的變量

mysqldump和xtranbackup的實現原理?備份恢復時間?

mysqldump:採用了sql級別的備份機制,是把數據導成sql腳本文件,在不同的mysql版本升級之間較合適;

xtranbackup:是innodb的hotbackup工具,在啓動的時候會複製所有的日誌文件,同時會啓動一個後臺進程,監視事務日誌,並且從事務日誌中複製最新的修改。因此,在xtranbackup啓動的開始就將每個事務日誌的修改都記錄了下來。

mysqldump:備份恢復的時間都很慢,任何數據的更新和變化都會被掛起,不適用於生產中的備份,

xtranbackup:備份和恢復的時間比nmysqldump快,但是會鎖表。

mysql中的innodb的行鎖,是通過加載什麼上面完成的?

是通過加在索引上來實現的。

mysql的數據備份方式?

完全備份、增量備份、差異備份

mysql的主從複製原理?

分爲同步複製和異步複製,實際複製架構中大部分爲異步複製。

複製過程:1.slave上的IO進程連接到master,並請求從binlog日誌的指定位置複製之後的日誌內容;

2.master接到來自slave的IO請求後,通過IO的請求讀取binlog日誌的指定位置之後的日誌內容,返回給slave的IO線程,在返回信息中還包括了本次master的binlog的文件名稱以及binlog日誌的位置;

3.slave的接收到IO進程的返回信息後,將日誌信息依次添加到relay-log的最末端,

4.sql進程檢測到relay-log增加了新內容,解析成sql命令,在本身執行;

同步複製:把數據都load到內存中,對內存的要求非常大,實施性不大。

發佈了23 篇原創文章 · 獲贊 38 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章