Linux_MySQL二次整理(1)

MariaDB or MySQL:

非精準描述:

數據的存儲是在硬盤上以數據流形式存在,讀取文件時,文件先被加載到內存中,然後在內存中查找所需要的字段,當文件特別大時,文件無法放進內存中,而且搜索一個字段也相當浪費時間,所以數據庫誕生

數據庫是以某種特定格式(格式化或半格式化數據)存儲, 之後可以建立INDEX(索引)來查找定位某一個數據(索引可以分多級),內存中就可以只加載索引信息,索引對應的數據存儲在磁盤上則可以找到數據,大大的節約了時間

發展歷史:

層次模型 --> 網狀模型 --> (Codd) 關係模型 

DBMS 數據庫管理系統 --> RDBMS 關係型數據庫管理系統

RDBMS:

範式:第一範式、第二範式、第三範式;

表:row(行), column(列);

關係運算:

選擇: 挑選出符合條件的數據

投影: 挑選出指定字段

數據庫概念:表、索引、視圖(虛表)、SQL、存儲過程、存儲函數、觸發器、事件調度器;

DDL

DML

約束:

主鍵約束:惟一、非空;一張表只能有一個;定義成爲能夠唯一表示一行數據在整個表中的內容的(一個字段或多個字段的組合)

惟一鍵約束:惟一,可以存在多個;

外鍵約束:參考性約束;表和表之間存在約束關係.被引用的表上存在主鍵,在引用表上的某一字段一定是在被引用表上存在的數據

檢查性約束:check; 定義的數據的範圍 

三層模型:

物理層 數據以數據流形式存儲在硬件上 文件系統級別   (系統工程師)

邏輯層 將數據流通過特定的結構轉化成  (DBA)

視圖層 可視化文本(表) (程序員)

實現:

Oracle, DB2, Sybase, Infomix, SQL Server;

MySQL, MariaDB, PostgreSQL, SQLite;

MySQL:

5.1 --> 5.5 --> 5.6 --> 5.7

MariaDB:5.5.x --> 10.x

圖片
圖片

 圖片
 

特性:

插件式存儲引擎

單進程多線程(32位系統只能使用3G內存)

安裝MySQL:

OS Vendor:rpm 

MySQL:

source code:cmake  (編譯器)

binary package: 通用二進制包

i686, x86_64; 

glibc VERSION (要求glibc的版本 )

prepackage:rpm, deb 

os, arch, 

配置文件:

讀取多處的多個配置文件,而且會以指定的次序的進行; 

# my_print_defaults 查看配置生效次序

Default options are read from the following files in the given order:

/etc/mysql/my.cnf  /etc/my.cnf ~/.my.cnf 

不同的配置文件中出現同一參數且擁有不同值時,後讀取將爲最終生效值; 

修改默認讀取的配置文件(mysqld_safe命令):

 --defaults-file=file_name

於讀取的默認配置文件之外再加載一個文件:

--defaults-extra-file=path

 

配置文件格式:ini風格的配置文件,能夠爲mysql的各種應用程序提供配置信息:

配置段:

[mysqld] 

[mysqld_safe] 線程安全的MySQL

[mysqld_multi] 一臺主機上運行多個MySQL

[server]

[mysql] 客戶端配置

[mysqldump] 備份 客戶端程序

[client]

...

PARAMETER:

innodb_file_per_table 有些發行版是 “-”.”_”通用的 而有些是隻其中一種

innodb-file-per-table 

程序文件:

服務端程序:mysqld_safe, mysqld_multi

客戶端程序:mysql, mysqldump, mysqladmin 通過mysql協議能連接到mysql發起請求並獲取相應的

工具程序:myisampack, ...

Yum安裝的mysql啓動後會自動初始化數據庫 二進制格式安裝則不會

mysql --> mysql protocol --> mysqld 

mysql:交互式CLI工具;

mysql [options] db_name

常用選項:

--host=host_name, -h host_name:服務端地址;

--user=user_name, -u user_name:用戶名;

--password[=password], -p[password]:用戶密碼; 

--port=port_num, -P port_num:服務端端口; 

--protocol={TCP|SOCKET|PIPE|MEMORY}:

本地通信:基於本地迴環地址進行請求,將基於本地通信協議;

Linux:SOCKET

Windows:PIPE,MEMORY

非本地通信:使用非本地迴環地址進行的請求; TCP協議;

--socket=path, -S path

--database=db_name, -D db_name:

--compress, -C:數據壓縮傳輸

--execute=statement, -e statement:非交互模式執行SQL語句;

--vertical, -E:查詢結果縱向顯示;

mysql命令的使用幫助:

# man mysql

# mysql  --help  --verbose

sql腳本運行:

mysql [options] [DATABASE] < /PATH/FROM/SOME_SQL_SCRIPT

mysqld服務器程序:工作特性的定義方式

命令行選項


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章