Rumah pangkalan data tutorial mysql SQLSERVER中的假脱机

SQLSERVER中的假脱机

Jun 07, 2016 pm 05:38 PM
sqlserver Luar talian

SQLSERVER中的假脱机 我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么? 这几天在家里研究了一下,收集了很多网上的资料 假脱机是中文的翻译,而英文的名字叫做 spool 在徐老师写的《SQLSERVER企业级平台管理实践》里提到了一下假脱机 在SQLSERVER

SQLSERVER中的假脱机

我发现网上对于假脱机的解释都非常零散,究竟假脱机是什么?

这几天在家里研究了一下,收集了很多网上的资料

假脱机是中文的翻译,而英文的名字叫做 spool

 

在徐老师写的《SQLSERVER企业级平台管理实践》里提到了一下假脱机

在SQLSERVER I/O问题的那一节

在性能监视器里,有一个计数器“worktables/sec” :

每秒创建的工作表数。例如,工作表可用于存储查询假脱机(query spool),LOB变量,XML变量,表变量,游标的临时结果

在《剖析SQLServer执行计划》里也提到了假脱机

(13) 有时查询优化器需要在tempdb数据库中建立临时工作表。如果是这样的话

就意味着图形执行计划中有标识成Index Spool, Row Count Spool或者Table Spool的图标。

任何时候,使用到工作表一般都会防碍到性能,因为需要额外的I/O开销来维护这个工作表。

 

之前本人也写过一篇文章:对于索引假脱机的一点理解

写这篇文章的时候当时还是对假脱机一知半解

假脱机在MSDN中的执行计划中的逻辑运算符和物理运算符中提到了几个假脱机相关的运算符(详见本文最后面)

Eager Spool

Lazy Spool

Index Spool (有时候也叫 Nonclustered Index Spool)

Row Count Spool

Spool

Table Spool

Window Spool 

Spool, Table Spool, Index Spool, Window Spool 和 Row Count Spool是物理运算符

Eager Spool 和 Lazy Spool是逻辑运算符

 

这些运算符描述了假脱机是如何工作的,在这里你需要非常清楚逻辑运算符和物理运算符的区别

MSDN中的解释:

逻辑运算符:逻辑运算符描述了用于处理语句的关系代数操作。 换言之,逻辑运算符从概念上描述了需要执行哪些操作。

物理运算符:物理运算符实施由逻辑运算符描述的操作。 每个物理运算符都是一个执行某项操作的对象或例程。

例如,某些物理运算符可访问表、索引或视图中的列或行。 其他物理运算符执行其他操作,如计算、聚合、数据完整性检查或联接。

物理运算符具有与其关联的开销。

注意:窗口假脱机是没有Eager Spool和Lazy Spool之分的,因为他既是逻辑运算符也是物理运算符!!

 

简单来讲SQLSERVER做某项操作由物理运算符来做,而具体怎样做就由逻辑运算符来决定

打个比方:小明在佛山,想去广州,小明可以选择开汽车去广州,踩自行车去广州,骑摩托车去广州(相当于做某项操作)

小明可以根据当时的路况:

(1)踩自行车:如果道路比较拥堵,踩自行车不用怕,,最多的车也能过,他可以选择使劲的踩(Eager Spool)或者慢慢踩(Lazy Spool)

(2)开汽车:如果道路比较畅通,他可以选择开快一点(Eager Spool)或者开慢一点(Lazy Spool)

(3)骑摩托车:如果道路比较拥堵,他可以选择抄小路,然后开快一点(Eager Spool)或者开慢一点(Lazy Spool)

 

不知道这个比喻大家明白没有,不过本人也找不到更好的比喻~

 

在图形执行计划中,你会发现Table Spool 有时候会带有  Eager Spool ,有时候有会带有 Lazy Spool

因为Table Spool是物理运算符,Eager Spool和Eager Spool 是逻辑运算符

Table Spool(表假脱机)

SQL脚本如下:

表假脱机 Eager Spool

Sales (EmpId INT, Yr INT, Sales MONEY) 5 INSERT Sales VALUES(1, 2005, 12000) 6 INSERT Sales VALUES(1, 2006, 18000) 7 INSERT Sales VALUES(1, 2007, 25000) 8 INSERT Sales VALUES(2, 2005, 15000) 9 INSERT Sales VALUES(2, 2006, 6000) 10 INSERT Sales VALUES(3, 2006, 20000) 11 INSERT Sales VALUES(3, 2007, 24000) .EmpId, Yr, SUM(Sales) AS Sales 17 FROM Sales EmpId, Yr WITH CUBE

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah yang objek bernama sudah wujud dalam pangkalan data sqlserver Bagaimana untuk menyelesaikan masalah yang objek bernama sudah wujud dalam pangkalan data sqlserver Apr 05, 2024 pm 09:42 PM

Untuk objek dengan nama yang sama yang telah wujud dalam pangkalan data SQL Server, langkah berikut perlu diambil: Sahkan jenis objek (jadual, paparan, prosedur tersimpan). IF NOT EXISTS boleh digunakan untuk melangkau penciptaan jika objek kosong. Jika objek mempunyai data, gunakan nama lain atau ubah suai struktur. Gunakan DROP untuk memadam objek sedia ada (berhati-hati, sandaran disyorkan). Semak perubahan skema untuk memastikan tiada rujukan kepada objek yang dipadam atau dinamakan semula.

Bagaimana untuk mengimport fail mdf ke dalam sqlserver Bagaimana untuk mengimport fail mdf ke dalam sqlserver Apr 08, 2024 am 11:41 AM

Langkah import adalah seperti berikut: Salin fail MDF ke direktori data SQL Server (biasanya C:\Program Files\Microsoft SQL Server\MSSQL\DATA). Dalam SQL Server Management Studio (SSMS), buka pangkalan data dan pilih Lampirkan. Klik butang Tambah dan pilih fail MDF. Sahkan nama pangkalan data dan klik butang OK.

Apa yang perlu dilakukan jika perkhidmatan sqlserver tidak dapat dimulakan Apa yang perlu dilakukan jika perkhidmatan sqlserver tidak dapat dimulakan Apr 05, 2024 pm 10:00 PM

Apabila perkhidmatan SQL Server gagal dimulakan, berikut ialah beberapa langkah untuk diselesaikan: Semak log ralat untuk menentukan punca. Pastikan akaun perkhidmatan mempunyai kebenaran untuk memulakan perkhidmatan. Semak sama ada perkhidmatan pergantungan sedang berjalan. Lumpuhkan perisian antivirus. Membaiki pemasangan SQL Server. Jika pembaikan tidak berjaya, pasang semula SQL Server.

Bagaimana untuk menyemak nombor port sqlserver Bagaimana untuk menyemak nombor port sqlserver Apr 05, 2024 pm 09:57 PM

Untuk melihat nombor port SQL Server: Buka SSMS dan sambung ke pelayan. Cari nama pelayan dalam Object Explorer, klik kanan padanya dan pilih Properties. Dalam tab Sambungan, lihat medan Port TCP.

Di manakah pangkalan data sqlserver? Di manakah pangkalan data sqlserver? Apr 05, 2024 pm 08:21 PM

Fail pangkalan data SQL Server biasanya disimpan di lokasi lalai berikut: Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data Lokasi fail pangkalan data boleh disesuaikan dengan mengubah suai laluan fail pangkalan data tetapan.

Bagaimana untuk memulihkan pangkalan data yang dipadam secara tidak sengaja dalam sqlserver Bagaimana untuk memulihkan pangkalan data yang dipadam secara tidak sengaja dalam sqlserver Apr 05, 2024 pm 10:39 PM

Jika anda secara tidak sengaja memadamkan pangkalan data SQL Server, anda boleh mengambil langkah-langkah berikut untuk memulihkan: hentikan aktiviti pangkalan data periksa log pangkalan data: pulihkan daripada sandaran menggunakan DBCC; alatan parti. Sila sandarkan pangkalan data anda dengan kerap dan dayakan pengelogan transaksi untuk mengelakkan kehilangan data.

Bagaimana untuk memadam sqlserver jika pemasangan gagal? Bagaimana untuk memadam sqlserver jika pemasangan gagal? Apr 05, 2024 pm 11:27 PM

Jika pemasangan SQL Server gagal, anda boleh membersihkannya dengan mengikuti langkah berikut: Nyahpasang SQL Server Padam kekunci pendaftaran Padam fail dan folder Mulakan semula komputer

Bagaimana untuk menyelesaikan ralat SqlServer sambungan Java Bagaimana untuk menyelesaikan ralat SqlServer sambungan Java May 01, 2023 am 09:22 AM

Masalahnya didapati bahawa kali ini saya menggunakan pangkalan data SqlServer, yang saya tidak pernah gunakan sebelum ini, tetapi masalahnya tidak serius Selepas saya menyambungkan SqlServer mengikut langkah-langkah dalam dokumen keperluan, saya memulakan projek SpringBoot dan menemui satu. ralat, seperti berikut: Pada mulanya saya fikir ia adalah sambungan SqlServer Terdapat masalah, jadi saya pergi untuk menyemak pangkalan data dan mendapati bahawa segala-galanya dalam pangkalan data saya mula-mula bertanya kepada rakan-rakan saya jika mereka mempunyai masalah seperti itu mendapati bahawa mereka tidak, jadi saya memulakan bahagian terbaik saya, menghadapi pengaturcaraan Baidu. Mesej ralat khusus yang saya mula selesaikan ialah ini, jadi saya memulakan pelaporan ralat Baidu: ERRORc.a.d.p.DruidDataSource$CreateCo

See all articles