一 簡介python
1. 數據(Data)mysql
描述事物的符號記錄稱爲數據,描述事物的符號既能夠是數字,也能夠是文字、圖片,圖像、聲音、語言等,數據由多種表現形式,它們均可以通過數字化後存入計算機
2. 數據庫(DataBase,簡稱DB)程序員
數據庫即存放數據的倉庫,只不過這個倉庫是在計算機存儲設備上,並且數據是按必定的格式存放的
過去人們將數據存放在文件櫃裏,如今數據量龐大,已經再也不適用
數據庫是長期存放在計算機內、有組織、可共享的數據
數據庫中的數據按必定的數據模型組織、描述和儲存,具備較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各類 用戶共享
3.數據庫管理系統(DataBase Management System 簡稱DBMS)redis
在瞭解了Data與DB的概念後,如何科學地組織和存儲數據,如何高效獲取和維護數據成了關鍵。
這就用到了一個系統軟件---數據庫管理系統 如MySQL、Oracle、SQLite、Access、MS SQL Server mysql 主要用於大型門戶,例如搜狗、新浪等,它主要的優點就是開放源代碼,由於開放源代碼這個數據庫是免費的,他如今是甲骨文公司的產品。 oracle 主要用於銀行、鐵路、飛機場等。該數據庫功能強大,軟件費用高。也是甲骨文公司的產品。 sql server 是微軟公司的產品,主要應用於大中型企業,如聯想、方正等。
4. 數據庫服務器、數據管理系統、數據庫、表與記錄的關係sql
記錄:1 tom 市場部 經理 表:employee,department,post(即文件) 數據庫:db1 (即文件夾) 數據庫管理系統:如MySQL(是一個軟件) 數據庫服務器:一臺計算機(對內存要求比較高)
#總結: 數據庫服務器:運行數據庫管理軟件 數據庫管理軟件:管理-數據庫 數據庫:即文件夾,用來組織文件/表 表:即文件,用來存放多行內容/多條記錄
二 數據模型mongodb
1.層次模型數據庫
按照層次結構的形式組織數據庫數據的模型
IMS
缺點:大量冗餘數據
2.網狀模型緩存
按照網狀結構的形式組織數據庫數據的模型
DBTG
缺點:後期維護困難
3.關係模型服務器
按照關係結構(行和列,表)的形式組織數據庫數據的模式
RDBMS(等於DBMS) 關係數據庫管理系統
# MySQL 是最流行的關係型數據庫管理系統,而在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System) 應用軟件之一數據結構
三 關係
#E-R模型 實體:數據對象 聯繫:一個或多個實體之間的關聯關係 屬性:實體的某一特性
四 MySQL
mysql就是一個基於socket編寫的C/S架構的軟件
#客戶端軟件 mysql自帶:如mysql命令,mysqldump命令等 python模塊:如pymysql
數據庫管理軟件分類
#分兩大類: 關係型:如sqllite,db2,oracle,access,sql server,MySQL #注:sql語句通用 非關係型:mongodb,redis,memcache #能夠簡單的理解爲: 關係型數據庫須要有表結構 非關係型數據庫是key-value存儲的,沒有表結構
五 SQL類型
有了mysql這個數據庫軟件,就能夠將程序員從對數據的管理中解脫出來,專一於對程序邏輯的編寫。mysql服務端軟件即mysqld幫咱們管理好文件夾以及文件,前提是做爲使用者的咱們,須要下載mysql的客戶端,或者其餘模塊來鏈接到mysqld,而後使用mysql軟件規定的語法格式去提交本身命令,實現對文件夾或文件的管理。該語法即sql(Structured Query Language 即結構化查詢語言)
SQL語言主要用於存取數據、查詢數據、更新數據和管理關係數據庫系統,SQL語言由IBM開發。
SQL語言分爲3種類型:
一、DDL語句 數據庫定義語言: 數據庫、表、視圖、索引、存儲過程,例如CREATE DROP ALTER #Data Definition Languages
二、DML語句 數據庫操縱語言: 插入數據INSERT、刪除數據DELETE、更新數據UPDATE、查詢數據SELECT #Data Manipulation Language 三、DCL語句 數據庫控制語言: 例如控制用戶的訪問權限GRANT、REVOKE #Data Control Language
六 數據結構
文件的邏輯關係:
上層:文件
中層:文件系統
下層:磁盤中的數據塊
數據庫的邏輯關係:
上層:數據表
中層:存儲引擎
下層:文件
#爲存儲數據,管理數據,查詢數據所創建的數據庫實現方法
七 MySQL存儲引擎
MySQL最重要,最不同凡響的特性是它的 存儲引擎架構,這種架構的設計將查詢(Query Processing)及其餘系統任務(Server Task)和數據的存儲/提取相分離。這種處理和存儲分離的設計能夠在使用時根據性能,特性,以及其餘需求來選擇數據存儲的方式。
存儲引擎:
a.MyISAM
默認的數據庫引擎
較高的寫入,查詢速度
不支持事務,行級鎖以及外鍵約束等功能
b.InnoDB
支持事務,行級鎖,外鍵約束等功能
c.Memory
#選擇合適的引擎
MySQL最初基於ISAM構建(後被MyISAM取代),其後陸續添加了更多的存儲應請和事務支持。MySQL有些怪異的行爲是因爲歷史遺留致使的。例如,在執行ALTER TABLE時,MySQL
提交事務的方式是因爲存儲引擎的架構直接致使的,而且數據字典也保存在 .frm文件中(這並非說InnoDB會致使ALTER變成非事務型的。對於InnoDB來講,全部的操做都是事務)。
除非須要用到某些InnoDB不具有的特性,而且沒有其餘辦法能夠替代,不然都應該優先選擇InnoDB引擎。
若要用到 全文索引,建議優先考慮InnoDB加上Sphinx的組合,而不是使用支持全文索引的MyISAM
八 數據的存儲和查詢
a.存儲管理器
專用的存儲組件,經過DDL來建立數據表的結構,再經過DML來保存SQL語句的處理結果
權限及完整性管理器
事務管理器
文件管理器
緩衝區管理器
b.查詢管理器
負責接收用戶的查詢請求,理解用戶請求,並將結果交給存儲管理器來真正實現數據管理
DDL,DML解釋器
查詢執行引擎
九 數據庫的後臺工做模式
單進程多線程的工做模式
a. 守護線程
b. 應用線程
每個用戶請求,分配一個應用線程
十 數據庫優化
a.緩存
用戶請求不須要每次都消耗系統資源
b.線程重用
用戶退出後,不撤銷線程,分配給其餘用戶使用
c.內存
在實際中,並很少用
MySQL缺點:
不支持SMP 對稱多處理器架構
如主機 16CPU:
16SQL語句 1CPU 1SQL
1SQL語句 1CPU 15CPU閒置