bitsCN.com
摘要
数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?本文给大家提供了一份不同存储模式下的性能测试数据,方便大家在今后的程序开发过程中可以利用这份数据选择合适的数据存储模式。
TAG
存储性能,innodb性能,存储介质
目录
目录… 1
简介… 1
存储性能分析… 2
测试程序说明:… 2
存储测试数据:… 2
Mysql innodb性能测试… 4
Mysql(InnoDB)刷盘策略… 6
c/s模式通信性能… 6
直接文件存储… 7
文件IO方式… 7
完全随机写还是跳跃,5倍的性能差距… 8
多线程随机读、处理速度、响应时间… 9
系统缓存… 10
系统缓存相关的几个内核参数… 10
dirty页的write back. 10
总结… 11
简介
数据的存储方式对应用程序的整体性能有着极大的影响。对数据的存取,是顺利读写还是随机读写?将数据放磁盘上还将数据放flash卡上?多线程读写对性能影响?面对着多种数据存储方式,我们如何选择?
本文会对不同存储方式做详细的性能测试,以提供给大家一份不同存储方式下的性能测试数据为主,同时会简单介绍各种存储方式之间的性能差异。
存储性能分析
影响储存速度有各个方面的原因,包括存储介质、读写盘方式以及硬件环境对读写盘时的影响。这里主要分享存储速度的一些调研结果。
硬件环境如下:
CPU: INTER Nehalem E5620 2.4GHZx2
内存: PC-8500 4GB*8
硬盘: 300G 10k*2, RAID:1
Flash: SSD 160GB_MLC X25-M G2×6
网卡: 千兆
数据量:117G
测试程序说明:
测试共分两套程序:
- A. 存储测试
a) 存储测试程序均使用pread/pwrite进行存储测试,块链遍历速度采用frs开发的块链库进行。
b) 为了减少随机读写时系统缓存带来的影响
i. 将数据量增大至117G
ii. 每次数据只被测试一次
iii. 程序入口处清内存
c) 测顺序读写时,一次读写所有数据。
d) 测随机读写时,每次读4KB,读381MB。
- B. 网络性能测试
a) 采用ub + ubrpc实现压力工具的服务器端和客户端。
b) UBSVR_NODELAY
c) 常用的Idl规范
d) 对两个不同大小的包请求进行测试
存储测试数据:
磁盘
顺序读:145.59MB/s
随机读:0.91MB/s (每次读4KB,读381MB)
顺序写:83.1MB/s
随机写:0.34MB/s (每次写4KB, 写381MB)
Flash
顺序读:61.5MB/s
随机读:14.9MB/s (每次读4KB,读381MB)
顺序写:59.8MB/s
随机写:1.93MB/s (每次写4KB, 写381MB)
内存
顺序写:1655MB/s
随机写:1496MB/s
Eg: 块链遍历速度1000万元素, 565582 us
磁盘与flash卡的顺序读写性能对比(单位MB):
磁盘与flash卡的随机读写性能对比(单位MB):
对比磁盘和flash卡的随机读写性能,我们可以看到:对于写操作而言,其在磁盘和flash卡上的性能差异较小,且事实上其性能差异会随着随机写时每次写入的数据量以及flash卡块大小等其它因素而产生波动;同时,在带写优化的flash上,当将数据写入flash卡时,数据会先写到一块buffer中,当满足一定条件(如buffer满)后,会将buffer的数据刷入flash,此时会阻塞写,因此会带来性能抖动。所以,当应用程序的多数操作是写入操作时,若没有flash卡也可以勉强将数据放到磁盘上。
但是相反,从测试结果看,在磁盘和flash卡上的随机读性能有着8倍甚至更多的差距,所以当程序读磁盘操作相当多时,把数据放到flash卡上是一个比较好的选择。比如,对于一个随机查询较多数据库应用程序,我们可以考虑把数据库的存储文件放到flash卡上。
另一方面,我们可以直观地看到,无论顺序读还是顺序写,在磁盘上的速度都远远高于在flash卡上的速度。所以如果程序所需的数据是从磁盘一次载入,载入后对数据的修改都是内存操作,不直接写盘,当需要写盘时,也是一次将内存中的数据dump到磁盘上时。我们都应该将数据放到磁盘,而不是flash卡上。
bitsCN.com

Les attributs acides comprennent l'atomicité, la cohérence, l'isolement et la durabilité, et sont la pierre angulaire de la conception de la base de données. 1. L'atomicité garantit que la transaction est complètement réussie ou complètement échouée. 2. La cohérence garantit que la base de données reste cohérente avant et après une transaction. 3. L'isolement garantit que les transactions n'interfèrent pas entre elles. 4. La persistance garantit que les données sont enregistrées en permanence après la soumission des transactions.

MySQL n'est pas seulement un système de gestion de base de données (SGBD) mais également étroitement lié aux langages de programmation. 1) En tant que SGBD, MySQL est utilisé pour stocker, organiser et récupérer des données et l'optimisation des index peut améliorer les performances de la requête. 2) La combinaison de SQL avec des langages de programmation, intégrés dans Python, en utilisant des outils ORM tels que SQLALCHEMY peut simplifier les opérations. 3) L'optimisation des performances comprend l'indexation, la requête, la mise en cache, la division des bibliothèques et des tableaux et la gestion des transactions.

MySQL utilise des commandes SQL pour gérer les données. 1. Les commandes de base incluent sélectionner, insérer, mettre à jour et supprimer. 2. L'utilisation avancée implique des fonctions de jointure, de sous-requête et d'agrégation. 3. Les erreurs courantes incluent les problèmes de syntaxe, de logique et de performances. 4. Les conseils d'optimisation incluent l'utilisation d'index, d'éviter la sélection * et l'utilisation de la limite.

MySQL est un système de gestion de la base de données relationnel efficace adapté au stockage et à la gestion des données. Ses avantages incluent les requêtes haute performance, le traitement des transactions flexibles et les types de données riches. Dans les applications pratiques, MySQL est souvent utilisé dans les plateformes de commerce électronique, les réseaux sociaux et les systèmes de gestion de contenu, mais l'attention doit être accordée à l'optimisation des performances, à la sécurité des données et à l'évolutivité.

La relation entre SQL et MySQL est la relation entre les langues standard et les implémentations spécifiques. 1.SQL est un langage standard utilisé pour gérer et exploiter des bases de données relationnelles, permettant l'addition de données, la suppression, la modification et la requête. 2.MySQL est un système de gestion de base de données spécifique qui utilise SQL comme langage de fonctionnement et fournit un stockage et une gestion efficaces de données.

INNODB utilise des redologues et des undologs pour assurer la cohérence et la fiabilité des données. 1. REDOLOGIE RÉCLABLIER MODIFICATION DE PAGE DES DONNÉES Pour assurer la récupération des accidents et la persistance des transactions. 2.Undologs Enregistre la valeur des données d'origine et prend en charge le Rollback de la transaction et MVCC.

Les métriques clés des commandes Explication incluent le type, la clé, les lignes et le supplément. 1) Le type reflète le type d'accès de la requête. Plus la valeur est élevée, plus l'efficacité est élevée, comme Const est meilleure que tous. 2) La clé affiche l'index utilisé et NULL n'indique pas d'index. 3) Les lignes estiment le nombre de lignes numérisées, affectant les performances de la requête. 4) Extra fournit des informations supplémentaires, telles que l'utilisation des invites de FilesOrt qu'elles doivent être optimisées.

L'utilisation de Temporary indique que la nécessité de créer des tables temporaires dans les requêtes MySQL, qui se trouvent couramment dans l'ordre en utilisant des colonnes distinctes, groupby ou non indexées. Vous pouvez éviter la survenue d'index et réécrire les requêtes et améliorer les performances de la requête. Plus précisément, lorsque l'utilisation de Temporary apparaît dans Explication Sortie, cela signifie que MySQL doit créer des tables temporaires pour gérer les requêtes. Cela se produit généralement lorsque: 1) la déduplication ou le regroupement lors de l'utilisation distincte ou groupby; 2) Trier lorsque OrderBy contient des colonnes non d'index; 3) Utilisez des opérations de sous-requête complexe ou de jointure. Les méthodes d'optimisation incluent: 1) OrderBy et GroupB


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Dreamweaver Mac
Outils de développement Web visuel

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),