主流的數據庫軟件都有哪些?開原可以跨平臺的數據庫都有哪些?
甲骨文: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到內存中,對內存的要求非常大,實施性不大。