mysql数据库简单介绍_数据库的简单介绍
關系型數據庫與非關系型數據庫
關系型數據庫:mysql /oracle/sql server/sqlite
優點:
1.易于維護:都是使用表結構,格式一致;
2.使用方便:sql語言通用,可用于復雜查詢
3.復雜操作:可用于一個表以及多個表之間非常復雜的查詢
缺點:
1.讀寫性能比較差,尤其海量數據的高效率讀寫;
2.固定的表結構,靈活度不夠
3.高并發讀寫需求,傳統的關系型數據庫來說,硬盤I/O是一個很大的瓶頸
非關系型數據庫(nosql):redis / hbase /mongoDB
類型:
文檔數據庫、鍵值數據庫、寬列存儲和圖形數據庫
優點:
1.格式靈活:存儲數據的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關系型數據庫則只支持基礎類型
2.速度快:nosql可以使用硬盤或者隨機存儲器作為載體,而關系型數據庫只能使用硬盤
3.高擴展性
4.成本低
缺點:
1.不提供sql支持
2.無事務處理
3.數據結構相對復雜,復雜查詢方面稍欠
Mysql數據庫的四大特征、四大隔離級別、三大范式、三大現象
一.數據概念
在數據庫系統中,多個事務并發執行時,針對數據庫不同的隔離級別,可能會出現一些問題。可能出現的問題有:臟讀,不可重復讀,幻讀
1.臟讀:
假設A和B兩個事務都出現了并發,A先讀取了表的數據,然后更新了表,但是這時A事務還沒提交。此時B事務讀取了表數據,這時候B實際上讀取的是A
事務更新完的表數據。如果A事務提交,那么該數據有意義;如果A事務回滾,B讀取的數據就沒有意義,這就是臟讀
2.不可重復讀:
就是字面意思,不能重復讀同一個數據,如果重復讀的話,有可能返回的結果不一樣。事務A先讀取了表的數據,沒有進行提交。然后事務B更新了表的數據,
此時事務A又讀取了表的數據,兩次數據不一樣,A無法處理。
3.幻讀:
事務A讀了一次表,最后得到的ID是3.事務B也讀了一次表,得到ID是3.此時事務A先插入了一條數據,然后讀了表,最新的ID是4;然后事務B也插入了一條
數據,讀取表,得到ID是5.此時就是幻讀。 刪除數據,修改數據都會有類似發生的情況
二.數據庫的隔離級別
讀未提交、讀已提交、可重復讀、可串行化
讀未提交:隔離級別最低,隔離度最弱。 臟讀、不可重復讀、幻讀都可能會發生
讀已提交: 解決了臟讀問題,存在不可重復讀、幻讀問題
可重復讀:存在一定的幻讀可能,Mysql默認的隔離級別
可串行化:級別最高,問題都解決,但是性能最低
三.事務的四大特性:
事務簡介:
1.在Mysql中只有使用了Innodb數據庫引擎的數據庫或者表才支持事務
2.事務處理可以用來維護數據庫的完整性,保證成批的SQL語句要么全部執行,要么全部不執行
3.事務用來管理insert,update,delete語句
特性:原子性、一致性、隔離性、持久性
1.原子性(Atomic):事務包含的所有數據庫操作,要么全部都成功,要么全部失敗,不可以分開執行
2.一致性(Consistent):將一個大事務拆分成若干小事務,小事務完成的數據狀態與使用一個大事務完成后的數據狀態一致
3.隔離性(Isolated):一個事務的執行不會被另一個事務干擾
4.持久性(Durable):事務執行的結果持久化到磁盤中
事務的操作:
start transaction;? #開啟事務
#sql語句 增刪改查
savepoint 節點名;? #保存節點
rollback;??? #取消全部事務 回滾
rollback to 節點名 #回到某個節點
commit??? #提交
四.數據庫設計的三大范式
1.第一范式(確保每列保持原子性)
比如某個人的地址,可以拆分成 (省份 城市 詳細住址)三個字段,這樣對用戶進行分類非常方便,也會提高數據庫的性能
2.第二范式(確保表中的每列都和主鍵相關)
3.第三范式(確保每列都和主鍵列直接相關,而不是間接相關)
五.Mysql數據庫中常用的幾種引擎以及區別
常用的包括三種:InnoDB、Myisam、Memory
InnoDB和Myisam的默認索引是B+ tree,Memory的默認索引是hash
區別:
1.InnoDB支持事務,支持外鍵,支持行級鎖,寫入數據時操作快
2.Myisam不支持事務,不支持外鍵,支持表級鎖,支持全文索引,讀取數據快
3.Memory所有的數據都保留在內存中,不需要進行磁盤的IO所以讀取的速度很快,但是一旦關機的話表的結構會保留但是數據就會丟失,表支持Hash索引,因此查找速度很快
Redis,MongoDb的特點
Redis
優點:
1.支持多種數據結構,如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、
2.支持持久化操作,可以進行aof及rdb數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失 的手段。
3.支持通過Replication進行數據復制,通過master-slave機制,可以實時進行數據的同步復制,支持多級復制和增量復制,master-slave機制是Redis進行HA的重要手段。
4.單線程請求,所有命令串行執行,并發情況下不需要考慮數據一致性問題。
5.支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。
6.支持簡單的事務需求,但業界使用場景很少,并不成熟
缺點:
1.Redis只能使用單線程,性能受限于CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒(取決于數據結構,數據大小以及服務器硬件性能,日常環境中QPS高峰大約在1-2w左右)。
2.支持簡單的事務需求,但業界使用場景很少,并不成熟,既是優點也是缺點。
3.Redis在string類型上會消耗較多內存,可以使用dict(hash表)壓縮存儲以降低內存耗用
MongoDb
優點:
1.更高的寫負載,MongoDB擁有更高的插入速度。
2.處理很大的規模的單表,當數據表太大的時候可以很容易的分割表。
3.高可用性,設置M-S不僅方便而且很快,MongoDB還可以快速、安全及自動化的實現節點(數據中心)故障轉移。
4.快速的查詢,MongoDB支持二維空間索引,比如管道,因此可以快速及精確的從指定位置獲取數據。MongoDB在啟動后會將數據庫中的數據以文件映射的方式加載到內存中。如果內存資源相當豐富的話,這將極大地提高數據庫的查詢速度。
5.非結構化數據的爆發增長,增加列在有些情況下可能鎖定整個數據庫,或者增加負載從而導致性能下降,由于MongoDB的弱數據結構模式,添加1個新字段不會對舊表格有任何影響,整個過程會非常快速。
缺點:
1.不支持事務。
2.MongoDB占用空間過大 。
3.MongoDB沒有成熟的維護工具
總結
以上是生活随笔為你收集整理的mysql数据库简单介绍_数据库的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做优盘启动不了怎么办 优盘无法启动怎么办
- 下一篇: hapi mysql项目实战路由初始化_