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