Maison base de données tutoriel mysql 理解SQL SERVER中的逻辑读,预读和物理读

理解SQL SERVER中的逻辑读,预读和物理读

Jun 07, 2016 pm 05:36 PM
培训课程 数据库查询

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对于逻辑读,预读,和物理读的单位是页.

image

      SQL SERVER一页的总大小为:8K

      但是这一页存储的数据会是:8K=8192字节-96字节(页头)-36字节(行偏移)=8060字节

      所以每一页用于存储的实际大小为8060字节.

      比如上面AdventureWorks中的Person.Address表,通过SSMS看到这个表的数据空间为:

image

      我们可以通过公式大概推算出占用了多少页:2.250*1024*1024/8060(每页的数据容量)≈293 - 表中非数据占用的空间≈290(上图中的逻辑读取数)

SQL SERVER查询语句执行的顺序

      SQL SERVER查询执行的步骤如果从微观来看,那将会非常多。这里为了讲述逻辑读等概念,,我从比较高的抽象层次来看:

image

      图有些粗糙。

      下面我解释一下图。当遇到一个查询语句时,SQL SERVER会走第一步,分别为生成执行计划(占用CPU和内存资源),同步的用估计的数据去磁盘中取得需要取的数据(占用IO资源,这就是预读),注意,两个第一步是并行的,SQL SERVER通过这种方式来提高查询性能.

      然后查询计划生成好了以后去缓存读取数据.当发现缓存缺少所需要的数据后让缓存再次去读硬盘(物理读)

      最后从缓存中取出所有数据(逻辑读)。

      下面我再通过一个简单的例子说明一下:

image

      这个估计的页数数据可以通过这个DMV看到:

image

    当我们第一次查询完成后,再次进行查询时,所有请求的数据这时已经在缓存中,SQL SERVER这时只要对缓存进行读取就行了,也就是只用进行逻辑读:

image

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment résoudre le problème du débordement du numéro de requête de base de données dans le développement Java Comment résoudre le problème du débordement du numéro de requête de base de données dans le développement Java Jun 29, 2023 pm 06:46 PM

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

Comment interroger une base de données et afficher les résultats en utilisant PHP Comment interroger une base de données et afficher les résultats en utilisant PHP May 02, 2024 pm 02:15 PM

É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 : ajoutez des requêtes de base de données et une surveillance des performances à votre application Middleware Laravel : ajoutez des requêtes de base de données et une surveillance des performances à votre application Jul 28, 2023 pm 02:53 PM

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 Conseils sur les requêtes de base de données PHP : Comment utiliser la fonction mysqli_query pour effectuer des requêtes SQL Jul 29, 2023 pm 04:42 PM

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émenter un mécanisme de gestion des erreurs pour les requêtes de base de données dans React Query Implémenter un mécanisme de gestion des erreurs pour les requêtes de base de données dans React Query Sep 28, 2023 pm 02:40 PM

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

Développement Laravel : Comment utiliser Eloquent ORM pour les requêtes de base de données ? Développement Laravel : Comment utiliser Eloquent ORM pour les requêtes de base de données ? Jun 14, 2023 pm 12:47 PM

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 React Query Stratégies de performances frontales pour optimiser les requêtes de base de données dans React Query Sep 26, 2023 am 11:38 AM

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

PHP haute performance : comment optimiser les requêtes de base de données PHP haute performance : comment optimiser les requêtes de base de données Jun 04, 2023 am 08:40 AM

À 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

See all articles