您好,登錄后才能下訂單哦!
不知道大家之前對類似MySQL有哪些入門知識的文章有無了解,今天我在這里給大家再簡單的講講。感興趣的話就一起來看看正文部分吧,相信看完MySQL有哪些入門知識你一定會有所收獲的。
1、mysql簡介 優(yōu)勢 簡單易用:MySQL 是一個高性能且相對簡單的數(shù)據(jù)庫系統(tǒng),與一些更大系統(tǒng)的設(shè)置和管理相比,其復(fù)雜程度較低。 價(jià)格:MySQL 對多數(shù)個人用戶來說是免費(fèi)的。 小巧:安裝包占用的磁盤空間小 支持查詢語言:MySQL 可以利用 SQL(結(jié)構(gòu)化查詢語言),SQL 是一種所有現(xiàn)代數(shù)據(jù)庫系統(tǒng)都選用的語言。也可以利用支持 ODBC(開放式數(shù)據(jù)庫連接)的應(yīng)用程序,ODBC 是 Microsoft 開發(fā)的一種數(shù)據(jù)庫通信協(xié)議。 性能:許多客戶機(jī)可同時連接到云服務(wù)器。MySQL數(shù)據(jù)庫沒有用戶數(shù)的限制,多個客戶機(jī)可同時使用同一個數(shù)據(jù)庫??衫脦讉€輸入查詢并查看結(jié)果的界面來交互 式地訪問 MySQL。這些界面為:命令行客戶機(jī)程序、Web 瀏覽器或 X Window System 客戶機(jī)程序。此外,還有由各種語言(如C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl)編寫的界面。因此,可以選擇使用已編好的客戶機(jī)程序或編寫自己的客戶機(jī)應(yīng)用程序。 連接性和安全性:MySQL 是完全網(wǎng)絡(luò)化的,其數(shù)據(jù)庫可在因特網(wǎng)上的任何地方訪問,因此,可以和任何地方的任何人共享數(shù)據(jù)庫。而且 MySQL 還能進(jìn)行訪問控制,可以控制哪些人不能看到您的數(shù)據(jù)。 可移植性:MySQL 可運(yùn)行在各種版本的 UNIX 以及其他非 UNIX 的系統(tǒng)(如 Windows 和 OS/2)上。MySQL 可運(yùn)行在從家用 PC 到高級的服務(wù)器上。 開放式的分發(fā):MySQL 容易獲得;只要使用 Web 瀏覽器即可。如果不能理解某樣?xùn)|西是如何起作用的,或者對某個算法感到好奇,可以將其源代碼取來,對源代碼進(jìn)行分析。如果不喜歡某些東西,則可以更改它。 速度:MySQL 運(yùn)行速度很快。開發(fā)者聲稱 MySQL 可能是目前能得到的最快的數(shù)據(jù)庫。 適用場景 web網(wǎng)站系統(tǒng) 日志倉庫系統(tǒng) 數(shù)據(jù)倉庫系統(tǒng) 2、mysql5.7版本特性 支持systemd 更好的性能:對于多核心CPU、固態(tài)硬盤、鎖有更好的優(yōu)化 更好的innodb存儲引擎 更好的復(fù)制功能 3、mysql鎖的概念 1、分類 表級鎖:開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)生鎖沖突的概率最高,并發(fā)度最低;MyISAM,MEMORY,CSV 行級鎖:開銷大,加鎖慢;會出現(xiàn)死鎖;鎖定粒度最小,發(fā)生鎖沖突的概率最低,并發(fā)度也最高;InnoDB 頁面鎖:開銷和加鎖時間界于表鎖和行鎖之間;會出現(xiàn)死鎖;鎖定粒度界于表鎖和行鎖之間,并發(fā)度一般;BerkeleyDB 2、死鎖 產(chǎn)生原因: 互斥條件:資源是獨(dú)占的且排他使用,進(jìn)程互斥使用資源,即任意時刻一個資源只能給一個進(jìn)程使用,其他進(jìn)程若申請一個資源,而該資源被另一進(jìn)程占有時,則申請者等待直到資源被占有者釋放。 不可剝奪條件:進(jìn)程所獲得的資源在未使用完畢之前,不被其他進(jìn)程強(qiáng)行剝奪,而只能由獲得該資源的進(jìn)程資源釋放。 請求和保持條件:進(jìn)程每次申請它所需要的一部分資源,在申請新的資源的同時,繼續(xù)占用已分配到的資源。 循環(huán)等待條件:在發(fā)生死鎖時必然存在一個進(jìn)程等待隊(duì)列{P1,P2,…,Pn},其中P1等待P2占有的資源,P2等待P3占有的資源,…,Pn等待P1占有的資源,形成一個進(jìn)程等待環(huán)路,環(huán)路中每一個進(jìn)程所占有的資源同時被另一個申請,也就是前一個進(jìn)程占有后一個進(jìn)程所深情地資源。 解決方法:(原則:通過破壞死鎖產(chǎn)生的4個必要條件來預(yù)防死鎖) 破壞不可剝奪條件:一個進(jìn)程不能獲得所需要的全部資源時便處于等待狀態(tài),等待期間他占有的資源將被隱式的釋放重新加入到系統(tǒng)的資源列表中,可以被其他的進(jìn)程使用,而等待的進(jìn)程只有重新獲得自己原有的資源以及新申請的資源才可以重新啟動,執(zhí)行。 破壞請求與保持條件:第一種方法靜態(tài)分配即每個進(jìn)程在開始執(zhí)行時就申請他所需要的全部資源。第二種是動態(tài)分配即每個進(jìn)程在申請所需要的資源時他本身不占用系統(tǒng)資源。 破壞循環(huán)等待條件:采用資源有序分配其基本思想是將系統(tǒng)中的所有資源順序編號,將緊缺的,稀少的采用較大的編號,在申請資源時必須按照編號的順序進(jìn)行,一個進(jìn)程只有獲得較小編號的進(jìn)程才能申請較大編號的進(jìn)程。 4、mysql文件 mysql日志文件 1、分類 錯誤日志(error log) 二進(jìn)制日志(binary log) 事務(wù)日志(repo log) 慢查詢?nèi)罩荆╯low log) 查詢?nèi)罩荆╭uery log) 2、詳解 錯誤日志: my.cnf: log-error: 云服務(wù)器啟動和關(guān)閉產(chǎn)生的信息、云服務(wù)器運(yùn)行中的錯誤、事件調(diào)度器運(yùn)行一個事件產(chǎn)生的信息、在從服務(wù)器上啟動服務(wù)器進(jìn)程產(chǎn)生的信息 log-warnings:警告信息 刷新錯誤日志: mv host_name.err host_name.err-old mysqladmin flush-logs mv host_name.err-old backup-directory 二進(jìn)制日志: my.cnf: log-bin:打開二進(jìn)制日志,并設(shè)置位置 max_binlog_size:設(shè)置binlog最大存儲上限,單位為M binlog-do-db:指定記錄哪個庫的binlog,忽略其他的 binlog-ignore-db:指定不記錄哪個庫的binlog mysql-bin.index:用于記錄binlog的路徑的文件 binlog_cache_size:默認(rèn)32768,一個事務(wù)沒提交的時候產(chǎn)生的日志緩存,建議2M到4M。如果大的事務(wù)較多時,應(yīng)適當(dāng)提高該值的大小 binlog_stmt_cache_size:當(dāng)非事務(wù)語句使用二進(jìn)制日志緩存,超出該值會使用一個臨時文件來存儲 binlog-format:{row|SQL|mixed}三種方式,分別對應(yīng)主從復(fù)制的三種方式 sync_binlog:設(shè)定多久同步一次二進(jìn)制日志到硬盤,0表示不同步 expire_log_days:設(shè)置日志的過期時間 查看二進(jìn)制日志: show binary logs; show master status; 更新二進(jìn)制日志: flush logs; 重啟mysql數(shù)據(jù)庫 查看某一個二進(jìn)制日志: show binlog events\G; show binlog events in 'mysql-bin.000001'\G; show binlog events in 'mysql-bin.000001' from 727\G; mysqlbinlog mysql-bin.000001 刪除二進(jìn)制日志: purge binary logs to 'mysql-bin.000010'(刪除000010之前的所有) purge binary logs before '2016-08-29 20:30:00';(刪除這個時間之前的) reset master;(全刪,慎用) 事務(wù)日志: 特點(diǎn): innodb特有的日志,可以提高事務(wù)的效率。 使用事務(wù)日志,存儲引擎在修改數(shù)據(jù)時只需要修改其內(nèi)存拷貝,在把修改持久化到事務(wù)日志,而不是每次修改都直接持久化修改的數(shù)據(jù)。 如果,數(shù)據(jù)還沒有持久化,系統(tǒng)崩潰,但是事務(wù)日志已經(jīng)持久化;在重啟后可根據(jù)事務(wù)日志進(jìn)行回復(fù) 查看當(dāng)前存儲引擎: show engines; 查看默認(rèn)的存儲引擎: show variables like '%storage_engine%'; 查看事務(wù)日志定義: show global variables like '%log%'; my.cnf文件: innodb_flush_log_at_timeout=1 innodb_flush_log_at_trx_commit=1 1:每次事務(wù)提交都會寫事務(wù)日志,并寫數(shù)據(jù);安全性最高,性能最差 2:每次事務(wù)提交會寫事務(wù)日志,每秒定時寫數(shù)據(jù);安全性和性能中 0:每秒定時寫事務(wù)日志和數(shù)據(jù);安全性最差,性能最高 慢查詢?nèi)罩荆? my.cnf文件: slow_query_log=1 slow_qurey_log_file=/usr/local/mysql/data/mysql.slow long_query_time=1 :查詢時長,默認(rèn)10s,超過則記日志 slow_launch_time=1 設(shè)置: set global slow_query_log=1 :開啟慢查詢 set session long_query_time=1s :設(shè)置慢查詢時間 或者 set global long_query_time=1s :全局下設(shè)置 查看慢查詢: show variables like '%slow%'; show variables like 'long%'; 分析工具: mysqldumpslow mysql.slow 3、補(bǔ)充: 查看系統(tǒng)設(shè)置/運(yùn)行狀態(tài): show global|session variables like %% show global|session status like %% 修改數(shù)據(jù)庫系統(tǒng)配置: 修改my.cnf文件 set global binlog_cache_size = 1048576; 查看mysql版本: mysql -V status; select version(); mysql數(shù)據(jù)文件 1、innodb數(shù)據(jù)文件 test.ibd:獨(dú)占數(shù)據(jù)文件 特點(diǎn):方便單表在數(shù)據(jù)庫中的移動,空間可回收,性能稍微強(qiáng)于共享表空間 test.ibdata:共享表空間數(shù)據(jù)文件 特點(diǎn):管理方便,但容易產(chǎn)生空間空隙,對統(tǒng)計(jì)分析、日值系統(tǒng)這類應(yīng)用不適用 test.frm:元數(shù)據(jù)文件 2、MyISAM test.MYI:存儲表的索引的文件 test.MYD:存儲表的真實(shí)數(shù)據(jù)的文件 test.frm:元數(shù)據(jù)文件 replication文件(備份文件,存于slave端) 1、master.info 存放master的信息的文件 2、relay log 中繼日志 3、relay log index 用于記錄relay log的絕對路徑 4、relay-log.info 用于存放I/O線程寫入到本地的relay log的信息 其他文件 1、系統(tǒng)配置文件 /etc/my.cnf文件 [client] 客戶端連接時可讀取的文件 [mysqld] mysqld的初始化時的參數(shù) 2、pid file pid存放文件,可在my.cnf中定義 3、socket file unix socket文件存放位置 5、mysql引擎 1、存儲引擎 分類: innodb MyISAM NDB Cluster 主要用于分布式集群中 Maria MyISAM的升級版 Falcon 由MySQL開發(fā)為了替代innodb的存儲引擎 Memory 存儲數(shù)據(jù)和索引在內(nèi)存,保存元數(shù)據(jù)在磁盤,追求高性能 Archive 僅支持insert、select語句,會對數(shù)據(jù)進(jìn)行壓縮 2、MySQL常用引擎詳解 MyISAM 特點(diǎn): 支持三種類型的索引:b-tree、r-tree、Full-text(全文) 它是5.1之前的默認(rèn)存儲引擎 不支持事務(wù) 只支持表級鎖 數(shù)據(jù)存放方式: 靜態(tài)(fixed) 動態(tài)(dynamic) 可變長壓縮(compressed) 統(tǒng)計(jì)數(shù)據(jù)大小方法: 先統(tǒng)計(jì)一行的長度 再統(tǒng)計(jì)每個表有多少條數(shù)據(jù) 最后所有表相加得出庫的數(shù)據(jù)大小 然后除以1024*1024得出為多少M(fèi)的數(shù)據(jù),在除以1024也就多少G的數(shù)據(jù) innodb 特點(diǎn): 支持事務(wù) 行級鎖 外鍵引用 數(shù)據(jù)和索引在同一個文件存放 可使用獨(dú)占表空間或共享表空間 innodb和MyISAM對比: 1、innodb支持事務(wù),且默認(rèn)開啟自動提交 2、innodb支持行級鎖,MyISAM使用表級鎖。MyISAM的讀鎖和寫鎖互斥,不適用于大量讀寫并存的情況 3、innodb支持外鍵 4、innodb不支持全文索引 6、mysql命令工具 1、mysql命令 提供接口管理MySQL數(shù)據(jù)庫 -u:指定用戶 -p:指定密碼 -h:指定主機(jī)地址,主機(jī)名 -e:接要執(zhí)行的sql語句,常用于腳本編寫,關(guān)閉交互 --prompt="\\u@\\h:\\d\\r:\\m:\\s>":建議使用,會出現(xiàn)你當(dāng)前所處的環(huán)境 2、mysqladmin命令 管理相關(guān)的功能的命令 mysqladmin -uroot -p123456 -h localhost ping 檢測主機(jī)存活 mysqladmin status 查看mysql的基本狀態(tài) uptime:運(yùn)行的時間 threads:活躍的進(jìn)程數(shù) questions:查詢次數(shù) slow queries:慢查詢次數(shù) opens:打開的數(shù)據(jù)表的數(shù)量 flush tables:執(zhí)行的flush、refresh、reload次數(shù) queries per second avg:平均查詢時間 memory in use:分配的內(nèi)存(編譯時加--with-debug參數(shù)) max memory used:分配的最大內(nèi)存(編譯時加--with-debug參數(shù)) 3、mysqldump mysql備份工具,可將mysql的sql語句dump成為文本 4、mysqlbinlog 分析mysql的binlog的作用 5、mysql的show命令 show databases; show tables; show table status from DB like TABLE; show columns from TABLE like DB; show index from TABLE; show variables; show processlist; show grant for USER; 6、mysqlslap 性能測試工具,可生成圖表 7、mysql的系統(tǒng)數(shù)據(jù)庫 1、INFORMAtION_SCHEMA 存儲了數(shù)據(jù)庫的元數(shù)據(jù)信息 TABLES表:提供數(shù)據(jù)庫中表和視圖的信息 COLUMNS表:表中的列的信息 TABLE_CONSTRAINTS表:存儲主鍵約束、外鍵約束、唯一約束、check約束等 STATISTICS:索引信息 2、PERFORMANCE__SCHEMA 存儲了提供數(shù)據(jù)庫性能優(yōu)化的參考信息 3、MYSQL庫 存儲用戶的權(quán)限和幫助信息 4、sys庫 存儲過程、自定義函數(shù)、視圖的存儲,結(jié)合了INFORMAtION_SCHEMA和PERFORMANCE__SCHEMA的信息
看完MySQL有哪些入門知識這篇文章,大家覺得怎么樣?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。