Veri sayfası saniyedeki megabaytı karşılaştırır, oysa bir web sunucusu büyük bir dosyayı baştan sona neredeyse hiç okumaz. Aynı anda binlerce küçük parça okur - satırlar, indeks sayfaları, oturum dosyaları - ve bu tümüyle başka bir ölçümdür.
Önemli olan sayı
- Dönen bir disk - saniyede birkaç yüz işlem, çünkü fiziksel bir kolun kımıldaması gerekir.
- SATA bir SSD - on binlerce, dönen diskler için tasarlanmış bir arayüzle sınırlı.
- NVMe - yüz binlerce; işlemciyle doğrudan, aynı anda birçok kuyrukla konuşur.
Asıl fark kuyruk derinliğidir: SATA'nın 32'lik tek bir kuyruğu vardır; NVMe'nin binlerce derinlikte binlerce kuyruğu. Yirmi PHP işçisinin aynı anda bir şey istemesi tam olarak bu biçimdir.
Nerede hissedersiniz
- Çok sayıda küçük okuma yapan bir veritabanı - yani bir içerik sisteminin neredeyse her sayfası.
- Dosya olarak yazılan oturumlar ve önbellekler.
- Bütün işin küçük işlemlerden oluştuğu bir yedek, bir içe aktarma ya da büyük bir silme.
Nerede hissetmezsiniz
Çalışma kümesi belleğe sığıyorsa diske neredeyse dokunulmaz ve NVMe çok az şey değiştirir. Yanıt daha çok bellekken daha hızlı depolama satın almak yaygın ve pahalı bir hatadır.
Kendinizinkini ölçün
fio --name=rand --rw=randread --bs=4k --size=1G --numjobs=4 --iodepth=32 --runtime=30 --time_based --group_reporting
Bu, derinlikte küçük rastgele okumaları ölçer; bir veritabanının ürettiği örüntü de budur. Ardışık ölçütler ise sunucunuzun hiç yapmadığı bir şeyi ölçer.
Önce iowait'e bakın:
top, %wa değeri. Sıfıra yakınsa, disk ne olursa olsun darboğazınız depolama değildir.
