MySQL是一個關聯式資料庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。
MySQL是一種關聯資料庫管理系統,將資料保存在不同的表中,而不是將所有資料放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
Mysql是開源的,所以你不需要支付額外的費用。
Mysql支援大型的資料庫。可以處理擁有上千萬筆記錄的大型資料庫。
MySQL使用標準的SQL資料語言形式。
Mysql可以允許在多個系統上,並且支援多種語言。這些程式語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
Mysql對PHP有很好的支持,PHP是目前最受歡迎的Web開發語言。
MySQL支援大型資料庫,支援5000萬筆記錄的資料倉儲,32位元系統表檔案最大可支援4GB,64位元系統支援最大的表檔為8TB。
Mysql是可以自訂的,採用了GPL協議,你可以修改原始碼來開發自己的Mysql系統。
mysql核心
sql優化攻城獅
mysql伺服器的最佳化
各種參數常數設定
查詢語句最佳化
主從複製
#軟體硬體升級
災難備份
#sql程式設計
完整的mysql最佳化需要很深的功底,大公司甚至有專門的DBA寫上述
此安裝的是MySQL 5.5, 安裝環境CentOS 6.5
版本下載位址官網下載位址
下載MySQL-Client 和MySQL-Server
downloads.skysql.com/archives/mysql-5.5/MySQL-server-5.5.16-1.rhel4.i386.rpm
downloads.skysql.com/archives/mysql- 5.5/MySQL-client-5.5.16-1.rhel4.i386.rpm
rpm -qa|grep -i mysql
rpm -e --nodeps RPM套件全名
注意提示)
# cat /etc/passwd | grep mysql
## cat /etc/group | grep mysql
#修改字元集,修改先前copy 的設定檔。 (詳細後續程式碼)
預設的是客戶端和伺服器都用了latin1,所以會亂碼。
在linux下查看安裝目錄ps -ef|grep mysql
5.5版本:
cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
5.6版本
#chkconfig mysql on 設定自動啟動
# chkconfig --list | grep mysql 檢查是否設定了自動啟動
# /etc/init .d/mysql start
# /etc/init.d/mysql stop
路徑 | 解釋 | #備註 |
---|---|---|
/var/lib/mysql/ | mysql資料庫檔案的存放路徑 | /var/lib/mysql/atguigu.cloud.pid |
#/usr/share/mysql | 設定檔目錄 | mysql.server指令及設定檔 |
/usr/bin | 相關指令目錄 | mysqladmin mysqldump等指令 |
#/etc/init.d/mysql | 啟動停相關腳本 |
[client] #password = your_password port = 3306 socket = /var/lib/mysql/mysql.sock # 这一行需要设置字符集 default-character-set=utf8 # The MySQL server [mysqld] port = 3306 # 还有这三行 character_set_server=utf8 character_set_client=utf8 collation-server=utf8_general_ci socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer_size = 384M max_allowed_packet = 1M table_open_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 [mysql] no-auto-rehash # 还有这一行 default-character-set=utf8
二進位日誌log-bin
主從複製
錯誤日誌log-error
#預設是關閉的,記錄嚴重的警告和錯誤訊息,每次啟動和關閉的詳細資訊等。
查詢日誌log
#預設關閉,記錄查詢的sql語句,如果開啟會減少mysql的整體效能,因為記錄日誌也是需要消耗系統資源的
資料檔
windows
Linux:
D:\devSoft\MySQLServer5.5\data目錄下可以挑選很多函式庫
預設路徑#cd /var/lib/mysql/
看看目前系統中的全部函式庫後再進去#ls -1F | grep ^d
兩個系統
frm檔案: 存放表結構
myd檔: 存放表資料
myi檔: 存放表索引
如何設定
Windows: my.ini檔案
#Linux: /etc/my.cnf檔案
和其它資料庫相比,MySQL有點與眾不同,它的架構可以在多種不同場景中應用並發揮良好作用。主要體現在儲存引擎的架構上,插件式的儲存引擎架構將查詢處理和其它的系統任務以及資料的儲存提取相分離。這種架構可以根據業務的需求和實際需求選擇合適的儲存引擎。
資料儲存層,主要是將資料儲存在運行於裸設備的檔案系統之上,並完成與儲存引擎的交互。
儲存引擎層,儲存引擎真正的負責了MySQL中資料的儲存和擷取,伺服器透過API與儲存引擎通訊。不同的儲存引擎具有的功能不同,這樣我們可以根據自己的實際需求進行選取。後面介紹MyISAM和InnoDB
第二層架構主要完成大多少的核心服務功能,如SQL接口,並完成緩存的查詢,SQL的分析和優化及部分內置函數的執行。所有跨儲存引擎的功能也在這一層實現,如流程、函數等。在該層,伺服器會解析查詢並建立對應的內部解析樹,並對其完成對應的最佳化如確定查詢表的順序,是否利用索引等,最後產生對應的執行操作。如果是select語句,伺服器也會查詢內部的快取。如果快取空間夠大,這樣在解決大量讀取操作的環境中能夠很好的提升系統的效能。
最上層是一些客戶端和連接服務,包含本機sock通訊和大多數基於客戶端/服務端工具實現的類似tcp/ip的通訊。主要完成一些類似連線處理、授權認證、及相關的安全方案。在該層上引入了執行緒池的概念,為透過認證安全接入的用戶端提供執行緒。同樣在該層上可以實現基於SSL的安全連結。伺服器也會為安全存取的每個用戶端驗證它所具有的操作權限。
1、連接層
2、服務層
#3、引擎層
4、儲存層
首先,mysql的查詢流程大致是:
mysql客戶端透過協定與mysql伺服器建連接,發送查詢語句,先檢查查詢緩存,如果命中,直接傳回結果,否則進行語句解析
有一系列預處理,例如檢查語句是否寫正確了,然後是查詢最佳化(例如是否使用索引掃描,如果是一個不可能的條件,則提前終止),產生查詢計劃,然後查詢引擎啟動,開始執行查詢,從底層儲存引擎呼叫API取得數據,最後傳回給客戶端。怎麼存數據、怎麼取數據,都與儲存引擎有關。
然后,mysql默认使用的BTREE索引,并且一个大方向是,无论怎么折腾sql,至少在目前来说,mysql最多只用到表中的一个索引。
查看命令
show variables like '%storage_engine%';
mysql> show engines;
查看当前的MySQL 提供什么存储引擎
看你的 MySQL 当前默认的存储引擎:
MyISAM
和InnoDB
阿里巴巴、淘宝用哪个
Percona 为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升。该版本提升了在高负载情况下的 InnoDB 的性能、为 DBA 提供一些非常有用的性能诊断工具;另外有更多的参数和命令来控制服务器行为。
该公司新建了一款存储引擎叫xtradb
完全可以替代innodb
,并且在性能和并发上做得更好,
阿里巴巴大部分mysql数据库其实使用的percona的原型加以修改。
【相关推荐】
2. MySQL最新手册教程
以上是關於資料庫中架構的相關介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!