⑴ 各種raid陣列的磁碟使用率各是多少
RAID 0:無差錯控制的帶區組
要實現RAID0必須要有兩個以上硬碟驅動器,RAID0實現了帶區組,數據並不是保存在一個硬碟上,而是分成數據塊保存在不同驅動器上。因為將數據分布在不同驅動器上,所以數據吞吐率大大提高,驅動器的負載也比較平衡。如果剛好所需要的數據在不同的驅動器上效率最好。它不需要計算校驗碼,實現容易。它的缺點是它沒有數據差錯控制,如果一個驅動器中的數據發生錯誤,即使其它盤上的數據正確也無濟於事了。不應該將它用於對數據穩定性要求高的場合。如果用戶進行圖象(包括動畫)編輯和其它要求傳輸比較大的場合使用RAID0比較合適。同時,RAID可以提高數據傳輸速率,比如所需讀取的文件分布在兩個硬碟上,這兩個硬碟可以同時讀取。那麼原來讀取同樣文件的時間被縮短為1/2。
RAID 1:鏡象結構
對於使用這種RAID1結構的設備來說,RAID控制器必須能夠同時對兩個盤進行讀操作和對兩個鏡象盤進行寫操作。通過下面的結構圖您也可以看到必須有兩個驅動器。因為是鏡象結構在一組盤出現問題時,可以使用鏡象,提高系統的容錯能力。它比較容易設計和實現。每讀一次盤只能讀出一塊數據,也就是說數據塊傳送速率與單獨的盤的讀取速率相同。因為RAID1的校驗十分完備,因此對系統的處理能力有很大的影響,通常的RAID功能由軟體實現,而這樣的實現方法在伺服器負載比較重的時候會大大影響伺服器效率。當您的系統需要極高的可靠性時,如進行數據統計,那麼使用RAID1比較合適。而且RAID1技術支持「熱替換」,即不斷電的情況下對故障磁碟進行更換,更換完畢只要從鏡像盤上恢復數據即可。當主硬碟損壞時,鏡像硬碟就可以代替主硬碟工作。鏡像硬碟相當於一個備份盤,可想而知,這種硬碟模式的安全性是非常高的,但帶來的後果是硬碟容量利用率很低,只有50%,是所有RAID級別中最低的。
RAID2:帶海明碼校驗
從概念上講,RAID 2 同RAID 3類似, 兩者都是將數據條塊化分布於不同的硬碟上, 條塊單位為位或位元組。然而RAID 2 使用一定的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復信息,使得RAID 2技術實施更復雜。因此,在商業環境中很少使用。下圖左邊的各個磁碟上是數據的各個位,由一個數據不同的位運算得到的海明校驗碼可以保存另一組磁碟上,具體情況請見下圖。由於海明碼的特點,它可以在數據發生錯誤的情況下將錯誤校正,以保證輸出的正確。它的數據傳送速率相當高,如果希望達到比較理想的速度,那最好提高保存校驗碼ECC碼的硬碟,對於控制器的設計來說,它又比RAID3,4或5要簡單。沒有免費的午餐,這里也一樣,要利用海明碼,必須要付出數據冗餘的代價。輸出數據的速率與驅動器組中速度最慢的相等。
RAID3:帶奇偶校驗碼的並行傳送
這種校驗碼與RAID2不同,只能查錯不能糾錯。它訪問數據時一次處理一個帶區,這樣可以提高讀取和寫入速度。校驗碼在寫入數據時產生並保存在另一個磁碟上。需要實現時用戶必須要有三個以上的驅動器,寫入速率與讀出速率都很高,因為校驗位比較少,因此計算時間相對而言比較少。用軟體實現RAID控制將是十分困難的,控制器的實現也不是很容易。它主要用於圖形(包括動畫)等要求吞吐率比較高的場合。不同於RAID 2,RAID 3使用單塊磁碟存放奇偶校驗信息。如果一塊磁碟失效,奇偶盤及其他數據盤可以重新產生數據。 如果奇偶盤失效,則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據,奇偶盤會成為寫操作的瓶頸。
RAID4:帶奇偶校驗碼的獨立磁碟結構
RAID4和RAID3很象,不同的是,它對數據的訪問是按數據塊進行的,也就是按磁碟進行的,每次是一個盤。在圖上可以這么看,RAID3是一次一橫條,而RAID4一次一豎條。它的特點的RAID3也挺象,不過在失敗恢復時,它的難度可要比RAID3大得多了,控制器的設計難度也要大許多,而且訪問數據的效率不怎麼好。
RAID5:分布式奇偶校驗的獨立磁碟結構
從它的示意圖上可以看到,它的奇偶校驗碼存在於所有磁碟上,其中的p0代表第0帶區的奇偶校驗值,其它的意思也相同。RAID5的讀出效率很高,寫入效率一般,塊式的集體訪問效率不錯。因為奇偶校驗碼在不同的磁碟上,所以提高了可靠性。但是它對數據傳輸的並行性解決不好,而且控制器的設計也相當困難。RAID 3 與RAID 5相比,重要的區別在於RAID 3每進行一次數據傳輸,需涉及到所有的陣列盤。而對於RAID 5來說,大部分數據傳輸只對一塊磁碟操作,可進行並行操作。在RAID 5中有「寫損失」,即每一次寫操作,將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。
RAID6:帶有兩種分布存儲的奇偶校驗碼的獨立磁碟結構
名字很長,但是如果看到圖,大家立刻會明白是為什麼,請注意p0代表第0帶區的奇偶校驗值,而pA代表數據塊A的奇偶校驗值。它是對RAID5的擴展,主要是用於要求數據絕對不能出錯的場合。當然了,由於引入了第二種奇偶校驗值,所以需要N+2個磁碟,同時對控制器的設計變得十分復雜,寫入速度也不好,用於計算奇偶校驗值和驗證數據正確性所花費的時間比較多,造成了不必須的負載。我想除了軍隊沒有人用得起這種東西。
RAID7:優化的高速數據傳送磁碟結構
RAID7所有的I/O傳送均是同步進行的,可以分別控制,這樣提高了系統的並行性,提高系統訪問數據的速度;每個磁碟都帶有高速緩沖存儲器,實時操作系統可以使用任何實時操作晶元,達到不同實時系統的需要。允許使用SNMP協議進行管理和監視,可以對校驗區指定獨立的傳送信道以提高效率。可以連接多台主機,因為加入高速緩沖存儲器,當多用戶訪問系統時,訪問時間幾乎接近於0。由於採用並行結構,因此數據訪問效率大大提高。需要注意的是它引入了一個高速緩沖存儲器,這有利有弊,因為一旦系統斷電,在高速緩沖存儲器內的數據就會全部丟失,因此需要和UPS一起工作。當然了,這么快的東西,價格也非常昂貴。
RAID10:高可靠性與高效磁碟結構
這種結構無非是一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充,達到既高效又高速還可以的目的。大家可以結合兩種結構的優點和缺點來理解這種新結構。這種新結構的價格高,可擴充性不好。主要用於容易不大,但要求速度和差錯控制的資料庫中。
RAID53:高效數據傳送磁碟結構
越到後面的結構就是對前面結構的一種重復和再利用,這種結構就是RAID3和帶區結構的統一,因此它速度比較快,也有容錯功能。但價格十分高,不易於實現。這是因為所有的數據必須經過帶區和按位存儲兩種方法,在考慮到效率的情況下,要求這些磁碟同步真是不容易。
RAID0+1:
把RAID0和RAID1技術結合起來,即RAID0+1。數據除分布在多個盤上外,每個盤都有其物理鏡像盤,提供全冗餘能力,允許一個以下磁碟故障,而不影響數據可用性,並具有快速讀/寫能力。要求至少4個硬碟才能作成RAID0+1。
⑵ Mysql中查詢所有資料庫佔用磁碟空間大小和單個庫中所有表的大小的sql語句
查詢所有資料庫佔用磁碟空間大小的SQL語句:
復制代碼
代碼如下:
select
TABLE_SCHEMA,
concat(truncate(sum(data_length)/1024/1024,2),'
MB')
as
data_size,
concat(truncate(sum(index_length)/1024/1024,2),'MB')
as
index_size
from
information_schema.tables
group
by
TABLE_SCHEMA
order
by
data_length
desc;
查詢單個庫中所有表磁碟佔用大小的SQL語句:
復制代碼
代碼如下:
select
TABLE_NAME,
concat(truncate(data_length/1024/1024,2),'
MB')
as
data_size,
concat(truncate(index_length/1024/1024,2),'
MB')
as
index_size
from
information_schema.tables
where
TABLE_SCHEMA
=
'TestDB'
group
by
TABLE_NAME
order
by
data_length
desc;
以上語句測試有效,注意替換以上的TestDB為資料庫名
⑶ linux查看磁碟io的幾種方法
linux查看磁碟io的幾種方法
怎樣才能快速的定位到並發高是由於磁碟io開銷大呢?可以通過三種方式:
第一種:用 top 命令 中的cpu 信息觀察
Top可以看到的cpu信息有:
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
具體的解釋如下:
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
Cpu(s):
0.3% us 用戶空間佔用CPU百分比
1.0% sy 內核空間佔用CPU百分比
0.0% ni 用戶進程空間內改變過優先順序的進程佔用CPU百分比
98.7% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
0.0% wa 的百分比可以大致的體現出當前的磁碟io請求是否頻繁。如果 wa的數量比較大,說明等待輸入輸出的的io比較多。
第二種:用vmstat
vmstat 命令報告關於線程、虛擬內存、磁碟、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用於平衡系統負載活動。系統范圍內的這些統計信息(所有的處理器中)都計算出以百分比表示的平均值,或者計算其總和。
輸入命令:
vmstat 2 5
如果發現等待的進程和處在非中斷睡眠狀態的進程數非常多,並且發送到塊設備的塊數和從塊設備接收到的塊數非常大,那就說明磁碟io比較多。
vmstat參數解釋:
Procs
r: 等待運行的進程數 b: 處在非中斷睡眠狀態的進程數 w: 被交換出去的可運行的進程數。此數由 linux 計算得出,但 linux 並不耗盡交換空間
Memory
swpd: 虛擬內存使用情況,單位:KB
free: 空閑的內存,單位KB
buff: 被用來做為緩存的內存數,單位:KB
Swap
si: 從磁碟交換到內存的交換頁數量,單位:KB/秒
so: 從內存交換到磁碟的交換頁數量,單位:KB/秒
IO
bi: 發送到塊設備的塊數,單位:塊/秒
bo: 從塊設備接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鍾中斷
cs: 每秒的環境(上下文)切換次數
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閑置時間
准測
更多vmstat使用信息
第二種:用iostat
安裝:
Iostat 是 sysstat 工具集的一個工具,需要安裝。
Centos的安裝方式是:
yum install sysstat
Ubuntu的安裝方式是:
aptitude install sysstat
使用:
iostat -dx 顯示磁碟擴展信息
root@fileapp:~# iostat -dx
r/s 和 w/s 分別是每秒的讀操作和寫操作,而rKB/s 和wKB/s 列以每秒千位元組為單位顯示了讀和寫的數據量
如果這兩對數據值都很高的話說明磁碟io操作是很頻繁。
+++++++++++++++++++++++++++++++++++++
linux wa%過高,iostat查看io狀況
1, 安裝 iostat
yum install sysstat
之後就可以使用 iostat 命令了,
2,入門使用
iostat -d -k 2
參數 -d 表示,顯示設備(磁碟)使用狀態;-k某些使用block為單位的列強制使用Kilobytes為單位;2表示,數據顯示每隔2秒刷新一次。
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合並為"一次I/O請求"。"一次傳輸"請求的大小是未知的。kB_read/s:每秒從設備(drive expressed)讀取的數據量;
kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
kB_read:讀取的總數據量;kB_wrtn:寫入的總數量數據量;這些單位都為Kilobytes。
指定監控的設備名稱為sda,該命令的輸出結果和上面命令完全相同。
iostat -d sda 2
默認監控所有的硬碟設備,現在指定只監控sda。
3, -x 參數
iostat還有一個比較常用的選項 -x ,該選項將用於顯示和io相關的擴展數據。
iostat -d -x -k 1 10
輸出信息的含義
。
4, 常見用法
iostat -d -k 1 10 #查看TPS和吞吐量信息(磁碟讀寫速度單位為KB)
iostat -d -m 2 #查看TPS和吞吐量信息(磁碟讀寫速度單位為MB)
iostat -d -x -k 1 10 #查看設備使用率(%util)、響應時間(await) iostat -c 1 10 #查看cpu狀態
5, 實例分析
iostat -d -k 1 | grep vda
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda10 60.72 18.95 71.53 395637647 1493241908
sda10 299.02 4266.67 129.41 4352 132
sda10 483.84 4589.90 4117.17 4544 4076
sda10 218.00 3360.00 100.00 3360 100
sda10 546.00 8784.00 124.00 8784 124
sda10 827.00 13232.00 136.00 13232 136
上面看到,磁碟每秒傳輸次數平均約400;每秒磁碟讀取約5MB,寫入約1MB。
iostat -d -x -k 1
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 1.56 28.31 7.84 31.50 43.65 3.16 21.82 1.58 1.19 0.03 0.80 2.61 10.29
sda 1.98 24.75 419.80 6.93 13465.35 253.47 6732.67 126.73 32.15 2.00 4.70 2.00 85.25
sda 3.06 41.84 444.90 54.08 14204.08 2048.98 7102.04 1024.49 32.57 2.10 4.21 1.85 92.24
可以看到磁碟的平均響應時間<5ms,磁碟使用率>80。磁碟響應正常,但是已經很繁忙了。
可以看到磁碟的平均響應時間<5ms,磁碟使用率>90。磁碟響應正常,但是已經很繁忙了。
await: 每一個IO請求的處理的平均時間(單位是微秒毫秒)。這里可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了
svctm 表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁碟性能很好,
如果await的值遠高於svctm的值,則表示I/O隊列等待太長, 系統上運行的應用程序將變慢。
%util: 在統計時間內所有處理IO時間,除以總共統計時間
所以該參數暗示了設備的繁忙程度
。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,因為磁碟的並發能力,所以磁碟使用未必就到了瓶頸)。
也可以使用下面的命令,同時顯示cpu和磁碟的使用情況
等待時間超過5ms, 磁碟io有問題
⑷ 怎樣查詢處理過程中磁碟活動的統計信息
這個問題最好到電腦技術論壇上去問,在網路應該問不出來。
⑸ SQL語句如何統計資料庫當日信息數量
用分組,組內計數就可以了,意思就是根據欄位a的取值進行分組,相同的為一組,在用count進行組內計數
select
a,count(*)
from
a
group
by
a