数据库-Mysql
數據庫三范式
第一范式:表中每個字段都不能再分。
第二范式:滿足第一范式并且表中的非主鍵字段都依賴于主鍵字段。
第三范式:滿足第二范式并且表中的非主鍵字段必須不傳遞依賴于主鍵字段。
數據庫事務
幾個SQL語句,要么全部執行成功,要么全部執行失敗。比如銀行轉賬就是事務的典型場景。
特性:原子性,一致性,隔離性,持久性。
事務三個常用命令:Begin Transaction、Commit Transaction、RollBack Transaction。
數據庫索引
索引是對數據庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問數據庫表中的特定信息。
索引分類:
主鍵索引(PRIMAY KEY) ALTER TABLE 'table_name' ADD PRIMARY KEY pk_index('col');
唯一索引(UNIQUE) ?ALTER TABLE 'table_name' ADD UNIQUE index_name('col');
常規索引(INDEX) ?ALTER TABLE 'table_name' ADD INDEX index_name('col');
全文索引(FULLTEXT) ?ALTER TABLE 'table_name' ADD FULLTEXT INDEX ft_index('col');
組合索引 ?ALTER TABLE 'table_name' ADD INDEX index_name('col1','col2','col3');
?Mysql存儲引擎
Mysql的存儲過程
Mysql5.0以前并不支持存儲過程,5.0以后開始支持存儲過程,大大提高了數據庫的處理速度,同時也可以提高數據庫編程的靈活性。
CREATE PROCEDURE??過程名([[IN|OUT|INOUT] 參數名 數據類型[,[IN|OUT|INOUT] 參數名 數據類型…]]) [特性 ...] 過程體
DELIMITER //CREATE PROCEDURE myproc(OUT s int)BEGINSELECT COUNT(*) INTO s FROM students;END// DELIMITER ;分隔符
MySQL默認以";"為分隔符,如果沒有聲明分割符,則編譯器會把存儲過程當成SQL語句進行處理,因此編譯過程會報錯,所以要事先用“DELIMITER //”聲明當前段分隔符,讓編譯器把兩個"//"之間的內容當做存儲過程的代碼,不會執行這些代碼;“DELIMITER ;”的意為把分隔符還原。
參數
存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,如果有多個參數用","分割開。MySQL存儲過程的參數用在存儲過程的定義,共有三種參數類型,IN,OUT,INOUT:
IN參數的值必須在調用存儲過程時指定,在存儲過程中修改該參數的值不能被返回,為默認值OUT:該值可在存儲過程內部被改變,并可返回INOUT:調用時指定,并且可被改變和返回
過程體
過程體的開始與結束使用BEGIN與END進行標識。
?
Mysql主從復制原理
1.主庫所有的寫操作記錄在二進制日志文件中,生成日志dump線程
2.將二進制日志文件傳給從庫的IO線程
3.從庫生成兩個線程,一個是IO線程,一個是SQL線程
4.IO線程去讀取主庫的二進制文件,并將二進制文件的內容寫入到中繼日志中
5.SQL線程讀取中繼日志文件的內容并解析成具體的操作,實現主從的操作一致性,達到最終數據一致性。
?
MyCat實現讀寫分離
MyCat的原理中最重要的一個動詞就是“攔截”,它攔截了用戶發送過來的sql語句,進行分析sql語句。比如分片分析,路由分析,讀寫分離分析,緩存分析等,
然后將sql發往后端的真實數據庫,并將返回的結果進行適當的處理,最終返回給用戶。
?
轉載于:https://www.cnblogs.com/yikuan-919/p/11182962.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: 山鬼
- 下一篇: 每天一个linux命令:cat