理解SQL SERVER中的逻辑读,预读和物理读
www.91xueit.com韩老师IT系统培训课程优化SQL性能,你必须理解数据库查询数据的细节,在查询分析器中打开IO统计,setstatisticsioon,就能查看查询过程关于逻辑
韩老师IT系统培训课程
优化SQL性能,你必须理解数据库查询数据的细节,在查询分析器中打开IO统计,set statistics io on ,就能查看查询过程 关于逻辑读,预读和物理读的显示。下面给大家讲解数据库查询数据的细节,你也就明白了什么是关于逻辑读,预读和物理读 要想把这几个概念弄清楚必须了解数据库查询数据的细节。
SQL SERVER数据存储的形式在谈到几种不同的读取方式之前,首先要理解SQL SERVER数据存储的方式.SQL SERVER存储的最小单位为页(Page).每一页大小为8k,SQL SERVER对于页的读取是原子性,要么读完一页,要么完全不读,不会有中间状态。而页之间的数据组织结构为B树(请参考我之前的博文).所以SQL SERVER对于逻辑读,预读,和物理读的单位是页.
SQL SERVER一页的总大小为:8K
但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节
所以每一页用于存储的实际大小为8060字节.
比如上面AdventureWorks中的Person.Address表,通过SSMS看到这个表的数据空间为:
我们可以通过公式大概推算出占用了多少页:2.250*1024*1024/8060(每页的数据容量)≈293 - 表中非数据占用的空间≈290(上图中的逻辑读取数)
SQL SERVER查询语句执行的顺序SQL SERVER查询执行的步骤如果从微观来看,那将会非常多。这里为了讲述逻辑读等概念,,我从比较高的抽象层次来看:
下面我解释一下图。当遇到一个查询语句时,SQL SERVER会走第一步,分别为生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读),注意,两个第一步是并行的,SQL SERVER通过这种方式来提高查询性能.
然后查询计划生成好了以后去缓存读取数据.当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读)
最后从缓存中取出所有数据(逻辑读)。
下面我再通过一个简单的例子说明一下:
这个估计的页数数据可以通过这个DMV看到:
当我们第一次查询完成后,再次进行查询时,所有请求的数据这时已经在缓存中,SQL SERVER这时只要对缓存进行读取就行了,也就是只用进行逻辑读:

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

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment résoudre le problème de débordement du numéro de requête de base de données dans le développement Java Titre : Comment résoudre le problème de débordement du numéro de requête de base de données dans le développement Java Résumé : Avec le développement d'Internet et l'augmentation progressive de la quantité de données, le nombre de données. les requêtes dans les bases de données augmentent également. Dans le développement Java, en raison des limitations de mémoire, vous pouvez rencontrer un problème de dépassement du nombre de requêtes de base de données. Cet article présentera plusieurs façons de résoudre ce problème. Texte : Optimisation des instructions de requête de base de données Tout d'abord, nous pouvons résoudre ce problème du point de vue de l'optimisation des instructions de requête de base de données. nous pouvons utiliser

Étapes pour utiliser PHP pour interroger la base de données et afficher les résultats : se connecter à la base de données ; interroger la base de données ; parcourir les lignes des résultats de la requête et générer des données de colonne spécifiques.

Middleware Laravel : ajout de requêtes de base de données et de surveillance des performances aux applications Introduction : les requêtes de données et la surveillance des performances sont très importantes lors du développement d'applications Web. Laravel fournit un moyen pratique de répondre à ces exigences, à savoir le middleware. Le middleware est une technologie qui gère les requêtes et les réponses. Il peut exécuter une certaine logique avant que la requête n'atteigne le contrôleur ou après que la réponse soit renvoyée à l'utilisateur. Cet article explique comment utiliser le middleware Laravel pour implémenter les requêtes de base de données et la surveillance des performances. 1. Créez le milieu

Conseils sur les requêtes de base de données PHP : Comment utiliser la fonction mysqli_query pour effectuer des requêtes SQL Lors du développement d'applications PHP, l'interaction avec la base de données est une partie très importante. Pour les opérations de requête, PHP fournit des fonctions intégrées pour exécuter des instructions SQL. Cet article se concentrera sur la façon d'utiliser la fonction mysqli_query pour aider les développeurs à mieux effectuer les opérations de requête de base de données. 1. Introduction à la fonction mysqli_query La fonction mysqli_query est une fonction intégrée de PHP.

Implémentation du mécanisme de gestion des erreurs des requêtes de base de données dans ReactQuery ReactQuery est une bibliothèque de gestion et de mise en cache des données, et elle devient de plus en plus populaire dans le domaine front-end. Dans les applications, nous devons souvent interagir avec des bases de données, et les requêtes de bases de données peuvent provoquer diverses erreurs. Par conséquent, la mise en œuvre d’un mécanisme efficace de gestion des erreurs est cruciale pour garantir la stabilité des applications et l’expérience utilisateur. La première étape consiste à installer ReactQuery. Ajoutez-le au projet à l'aide de la commande suivante : n

Laravel est un framework de développement PHP populaire qui fournit une série d'outils et de fonctions d'assistance pour accélérer le développement d'applications Web. Parmi eux, EloquentORM est l'un des outils utilisés pour les opérations de base de données dans le framework Laravel, permettant aux développeurs Laravel d'interroger et d'exploiter la base de données plus rapidement. Dans cet article, nous verrons comment utiliser EloquentORM pour les requêtes de base de données. Installer EloquentORM Tout d'abord, nous devons installer

Stratégies de performances frontales pour optimiser les requêtes de base de données dans ReactQuery Dans le développement front-end moderne, nous devons souvent interagir avec la base de données principale pour obtenir les données nécessaires au rendu de la page. Cependant, des requêtes fréquentes dans la base de données peuvent entraîner des problèmes de performances, en particulier lorsque la page doit restituer de grandes quantités de données. Dans ce cas, nous pouvons utiliser ReactQuery pour optimiser les performances frontales des requêtes de base de données. ReactQuery est un JavaScr pour gérer les requêtes de données et l'état

À l’ère actuelle d’Internet, avec la croissance explosive des données, les bases de données sont devenues le cœur d’un service. Les performances et la vitesse de la base de données affectent directement l'expérience utilisateur et la convivialité du site Web et de ses applications. Par conséquent, la manière d'optimiser les requêtes de base de données est une question sur laquelle les développeurs doivent se concentrer. Dans le langage PHP, grâce à l'optimisation des instructions de requête de base de données, les performances du programme peuvent être améliorées, la charge sur le serveur peut être réduite et la stabilité du service peut être améliorée. Cet article présentera comment optimiser les requêtes de base de données sous les aspects suivants : 1. Utilisation d'index lors de l'exécution de requêtes
