系统协议
1.TCP/IP ? ?local,remote ? ?all
2.Unix ?soket ?file ? local only ? ? unix only
3.named pipe ?local only ? windows ?only
4. shared memory ?local only ? ?windows only
TCP/IP連接被支持有任何Mysql除非--skip-network選項
unix socket文件連接有unix servers支持
name-pipe連接被支持在windows和如果服務器有-nt. ?--enable-named-pipe
shared-memory連接使用--shared-memory選項
在很多windows系統配置中,通過named pipes是比使用TCP/ip慢的多,當TCP/ip不可以使用時使用named pipes
在unix,一個unix socket文件連接提供了更好的性能逼著TCP/ip連接
在任何平臺,一個ODBC連接通過是不直接使用native c client庫慢的 ? ?
在任何平臺,使用JDBC連接通過Mysql/J ?是可能和使用native C客戶端庫同樣的速度
23.3 ?這SQL解析和存儲引擎
使用兩層處理模型來執行每個語句:
? 1.這上層包含SQL 解析和優化器。服務器處理每個語句來看是那種請求,然后使用優化器來決定執行這語句效率怎樣。然和,這層并不是和表直接通信
2.這底層是一套存儲引擎。服務器使用一個中間架構:每個存儲引擎是一個軟件模塊被使用來管理一種特定類型表。存儲引擎和一個表直接管理獲取他來存儲和獲取數據。
?
1.創建表有一個ENGINE選項能夠使你指定存儲引擎來使用在一個表。alter 表有一個ENGINE選項來使你轉換一個表來使用不同的存儲引擎
2.一些索引類型對特定的存儲有效。例如,僅僅只有myisam引擎支持full-text或spatial索引
3.commit和roolback有效對于表僅僅對于transactional存儲如InnoDB有效。
23.4 mysql如何使用磁盤空間
MySQL server有以下方式,服務器的數據目錄文件夾。這服務器使用數據目錄來存儲下面文件:
1.database目錄。每個數據庫都有一個單獨目錄在data目錄下。
2.table格式文件(.frm文件)包含表結構的描述。每個表都有自己的.frm文件,位于則恰當的數據庫目錄。
3.數據和索引文件對于每個表被創建有一些存儲以前位于恰當的數據庫目錄。例如,這MyISAM存儲以前創建一個數據文件盒一個索引文件對于每個表。
4.InnoDB存儲引擎有它自己的表空間和日志文件。
5.服務器日志文件和狀態文件。這些文件包含服務器處理語句的信息。日志被用來復制和數據恢復,來獲得信息來優化查詢性能和來決定師傅操作問題正在發生。
23.5 ?MySQL如何使用內存
1.Thread handler。這服務器是多線程的,和一個線程是想一個小禁區運行在服務器內部。對于每個客戶端的連接,服務器分配一個線程給它來管理連接。對于性能原因,服務器使用集中buffer來管理信息在內存出于避免磁盤訪問的目的:
1.賦予table緩存。
2.對于MyISAM表一個關鍵緩存保存有索引塊。來緩存索引塊在內存中,服務器總是避免讀取索引內容從磁盤為了基于所以回去和其他關于索引操作如排序
3.表索引保存有開放表的描述符。
4.服務器支持一個查詢緩存來加速處理查詢被重復訪問。
5.這主機持有主機解析查找的結果。這些結果被緩存來減少調用的次數讀研主機解析器。
6.這Innodb存儲引擎日志信息關于transaction在內存緩存。當一個transcation提交,這日志環被刷新到InnoDB日志文件,提供在磁盤的記錄能夠被用來重新提交任務如果它被丟失由于一個crash。如果transaction回滾,這刷新到磁盤不需要重新做。
7.這Memory存儲引擎創建表在內存中。這些表時非常快因為沒有磁盤和內存的交互來獲得他們的內容
8.這服務器肯能創建內部臨時表在內存中在訪問處理期間。如果表的尺寸超過tmp_table_size系統變量,服務器轉化它為MyISAM-format表在磁盤和增加Created_tmp_disk_tables狀態變量。
9.服務器維護幾種緩存對于每個客戶端連接。
幾種SHOW語句能夠使你檢測幾種內存先關參數。SHOW VARIVABLES展示服務器系統變量以至于你能偶看到服務器怎樣配置。SHOW STATUS展示系統狀態變量。這狀態指示器能夠使你檢測緩存的運行狀態,能夠用來判斷是否你使用更大的緩存是更好地。
總結
- 上一篇: 一般的查询加载
- 下一篇: 外卖匹配系统_“外卖智能算法”和大学生有