찾다
데이터 베이스MySQL 튜토리얼数据库索引统计信息

数据库索引统计信息

Jun 07, 2016 pm 03:06 PM
oracle정보데이터 베이스지역 사회색인통계입력하다

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 SQL Server 2005 允许创建有关列中值的分布情况的统计信息。查询优化器使用这些统计信息并通过估计使用索引评估查询的开销来确定最佳查询计划。 创建统计信息后,数据库引擎对列值(根据这些值创建

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  SQL Server 2005 允许创建有关列中值的分布情况的统计信息。查询优化器使用这些统计信息并通过估计使用索引评估查询的开销来确定最佳查询计划。

  创建统计信息后,数据库引擎对列值(根据这些值创建统计信息)进行排序,并根据这些值(最多 200 个,按间隔分隔开)创建一个"直方图".直方图指定有多少行精确匹配每个间隔值,有多少行在间隔范围内,以及间隔中值的密度大小或重复值的发生率。

  SQL Server 2005 引入了对 char、varchar、varchar(max)、nchar、nvarchar、nvarchar(max)、text 和 ntext 列创建的统计信息收集的其他信息。这些信息称为"字符串摘要",可以帮助查询优化器估计字符串模式中查询谓词的选择性。查询中有 LIKE 条件时,使用字符串摘要可以更准确地估计结果集大小,并不断优化查询计划。这些条件包括诸如 WHERE ProductName LIKE '%Bike' 和 WHERE Name LIKE '[CS]heryl' 之类的条件。

  注意:

  如果列样本摘要的大小超过了数据库引擎可以维护的范围,则不对字符串摘要信息进行维护。例如,如果统计信息是使用 WITH FULLSCAN 对具有 85,000 行的表中唯一的varchar(80) 列(每个字符串中有 80 个字符,字符串之间几乎没有相似性)创建的,则不对这些统计信息的字符串摘要进行维护。若要确定是否为特定的统计信息对象存储了字符串摘要,请使用 DBCC SHOW_STATISTICS (Transact-SQL)。

  统计信息自动功能工作方式

  创建索引时,查询优化器自动存储有关索引列的统计信息。另外,当 AUTO_CREATE_STATISTICS 数据库选项设置为 ON(默认值)时,数据库引擎自动为没有用于谓词的索引的列创建统计信息。

  随着列中数据发生变化,索引和列的统计信息可能会过时,从而导致查询优化器选择的查询处理方法不是最佳的。例如,如果创建一个包含一个索引列和 1,000 行数据的表,每一行在索引列中的值都是唯一的,则查询优化器将把该索引列视为收集查询数据的好方法。如果更新列中的数据后存在许多重复值,则该列不再是用于查询的理想候选列。但是,查询优化器仍然根据索引的过时分布统计信息(基于更新前的数据),将其视为好的候选列。

  注意:

  在使用 SQL Server Management Studio 以图形方式显示查询的执行计划时,过时或缺少的统计信息将予以警告显示(表名称以红色文本显示)。有关详细信息,请参阅显示图形执行计划 (SQL Server Management Studio)。另外,使用 SQL Server Profiler 监视 Missing Column Statistics 事件类可以指明何时缺少统计信息。有关详细信息,请参阅 Errors and Warnings 事件类别(数据库引擎)。

  当 AUTO_UPDATE_STATISTICS 数据库选项设置为 ON(默认值)时,查询优化器会在表中的数据发生变化时自动定期更新这些统计信息。每当查询执行计划中使用的统计信息没有通过针对当前统计信息的测试时就会启动统计信息更新。采样是在各个数据页上随机进行的,取自表或统计信息所需列的最小非聚集索引。从磁盘读取一个数据页后,该数据页上的所有行都被用来更新统计信息。常规情况是:在大约有 20% 的数据行发生变化时更新统计信息。但是,查询优化器始终确保采样的行数尽量少。对于小于 8 MB 的表,则始终进行完整扫描来收集统计信息。

  采样数据(而不是分析所有数据)可以将统计信息自动更新的开销降至最低。在某些情况下,统计采样无法获得表中数据的精确特征。可以使用 UPDATE STATISTICS 语句的 SAMPLE 子句和 FULLSCAN 子句,控制按逐个表的方式手动更新统计信息时采样的数据量。FULLSCAN 子句指定扫描表中的所有数据来收集统计信息,而 SAMPLE 子句用来指定采样的行数百分比或采样的行数。

  统计信息异步更新

  启动更新过期统计信息的查询必须等待那些统计信息更新,之后才能编译并返回结果集。这会导致不可预知的查询响应时间,并可能导致应用程序因过长超时而失败。

  在 SQL Server 2005 中,数据库选项 AUTO_UPDATE_STATISTICS_ASYNC 提供了统计信息异步更新功能。当此选项设置为 ON 时,查询不等待统计信息更新,即可进行编译。而过期的统计信息置于队列中,由后台进程中的工作线程来更新。查询和任何其他并发查询都通过使用现有的过期统计信息立即编译。由于不存在等待更新后的统计信息的延迟,因此查询响应时间可预测;但是过期的统计信息可能导致查询优化器选择低效的查询计划。在更新后的统计信息就绪后启动的查询将使用那些统计信息。这可能会导致重新编译缓存的计划(取决于较旧的统计信息版本)。如果在同一个显式用户事务中出现某些数据定义语言 (DDL) 语句(例如,CREATE、ALTER 和 DROP 语句),则无法更新异步统计信息。

  AUTO_UPDATE_STATISTICS_ASYNC 选项设置于数据库级别,并确定用于数据库中所有统计信息的更新方法。它只适用于统计信息更新,而无法用于以异步方式创建统计信息。只有将 AUTO_UPDATE_STATISTICS 设置为 ON 时,将此选项设置为 ON 才有效。默认情况下,AUTO_UPDATE_STATISTICS_ASYNC 选项设置为 OFF.有关设置此选项的详细信息,请参阅 ALTER DATABASE (Transact-SQL)。

  在将数据库设置为 SINGLE_USER 之前,应验证 AUTO_UPDATE_STATISTICS_ASYNC 选项设置为 OFF.设置为 ON 时,用于更新统计信息的后台线程将与数据库建立连接,您将无法以单用户模式访问数据库。如果此选项设置为 ON,请执行以下任务:

  将 AUTO_UPDATE_STATISTICS_ASYNC 设置为 OFF.

  通过查询 sys.dm_exec_background_job_queue 动态管理视图来检查活动的异步统计信息作业。

  如果存在活动的作业,可以允许作业完成或通过使用 KILL STATS JOB 来手动终止这些作业。

  最佳实践注意事项

  如果您的应用程序出现以下情况,应考虑将 AUTO_UPDATE_STATISTICS_ASYNC 选项设置为 ON.

  遇到由一个或多个等待更新后的统计信息的查询导致的客户端请求超时。

  请求可预测查询响应时间,即使存在偶尔运行执行因过期统计信息导致的低效查询计划的查询的情况。

  查看异步更新统计信息属性

  若要查看 AUTO_UPDATE_STATISTICS_ASYNC 选项的 ON 或 OFF 状态,请从 sys.databases 目录视图中选择 is_auto_update_stats_async_on 列。有关详细信息,请参阅 sys.databases (Transact-SQL)。

  若要查看统计信息是否已经置于队列中等待更新或正在更新,请使用 sys.dm_exec_background_job_queue 动态管理视图。统计信息中,列 object_id1 为表或视图 ID,列 object_id2 为统计信息 ID.sys.dm_exec_background_job_queue_stats 动态管理视图用于查看所有后台作业队列的聚合统计信息,例如等待执行的作业请求数、失败的请求数以及以前提交的请求的平均执行时间。

  禁用统计信息自动功能

  可以按照以下方式针对特定列或索引禁用统计信息自动生成功能。

  使用 sp_autostats 系统存储过程。

  使用 CREATE INDEX 语句的 STATISTICS_NORECOMPUTE 子句。

  使用 UPDATE STATISTICS 语句的 NORECOMPUTE 子句。

  使用 CREATE STATISTICS 语句的 NORECOMPUTE 子句。

  使用 ALTER DATABASE 语句将 AUTO_CREATE_STATISTICS 和 AUTO_UPDATE_STATISTICS 数据库选项设置为 OFF.有关详细信息,请参阅设置数据库选项。

  如果指示数据库引擎不要自动维护统计信息,则必须手动更新统计信息。

  注意:

  除非指定了 NORECOMPUTE 子句,否则 UPDATE STATISTICS 语句将重新启用统计信息自动更新功能。

数据库索引统计信息

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)MySQL에서 느린 쿼리를 식별하고 최적화하는 방법은 무엇입니까? (느린 쿼리 로그, Performance_schema)Apr 10, 2025 am 09:36 AM

MySQL 느린 쿼리를 최적화하려면 SlowQueryLog 및 Performance_Schema를 사용해야합니다. 1. SlowQueryLog 및 Set Stresholds를 사용하여 느린 쿼리를 기록합니다. 2. Performance_schema를 사용하여 쿼리 실행 세부 정보를 분석하고 성능 병목 현상을 찾고 최적화하십시오.

MySQL 및 SQL : 개발자를위한 필수 기술MySQL 및 SQL : 개발자를위한 필수 기술Apr 10, 2025 am 09:30 AM

MySQL 및 SQL은 개발자에게 필수적인 기술입니다. 1.MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템이며 SQL은 데이터베이스를 관리하고 작동하는 데 사용되는 표준 언어입니다. 2.MYSQL은 효율적인 데이터 저장 및 검색 기능을 통해 여러 스토리지 엔진을 지원하며 SQL은 간단한 문을 통해 복잡한 데이터 작업을 완료합니다. 3. 사용의 예에는 기본 쿼리 및 조건 별 필터링 및 정렬과 같은 고급 쿼리가 포함됩니다. 4. 일반적인 오류에는 구문 오류 및 성능 문제가 포함되며 SQL 문을 확인하고 설명 명령을 사용하여 최적화 할 수 있습니다. 5. 성능 최적화 기술에는 인덱스 사용, 전체 테이블 스캔 피하기, 조인 작업 최적화 및 코드 가독성 향상이 포함됩니다.

MySQL 비동기 마스터 슬레이브 복제 프로세스를 설명하십시오.MySQL 비동기 마스터 슬레이브 복제 프로세스를 설명하십시오.Apr 10, 2025 am 09:30 AM

MySQL 비동기 마스터 슬레이브 복제는 Binlog를 통한 데이터 동기화를 가능하게하여 읽기 성능 및 고 가용성을 향상시킵니다. 1) 마스터 서버 레코드는 Binlog로 변경됩니다. 2) 슬레이브 서버는 I/O 스레드를 통해 Binlog를 읽습니다. 3) 서버 SQL 스레드는 데이터를 동기화하기 위해 Binlog를 적용합니다.

MySQL : 쉽게 학습하기위한 간단한 개념MySQL : 쉽게 학습하기위한 간단한 개념Apr 10, 2025 am 09:29 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MySQL : 데이터베이스에 대한 사용자 친화적 인 소개MySQL : 데이터베이스에 대한 사용자 친화적 인 소개Apr 10, 2025 am 09:27 AM

MySQL의 설치 및 기본 작업에는 다음이 포함됩니다. 1. MySQL 다운로드 및 설치, 루트 사용자 비밀번호를 설정하십시오. 2. SQL 명령을 사용하여 CreateAbase 및 CreateTable과 같은 데이터베이스 및 테이블을 만듭니다. 3. CRUD 작업을 실행하고 삽입, 선택, 업데이트, 명령을 삭제합니다. 4. 성능을 최적화하고 복잡한 논리를 구현하기 위해 인덱스 및 저장 절차를 생성합니다. 이 단계를 사용하면 MySQL 데이터베이스를 처음부터 구축하고 관리 할 수 ​​있습니다.

InnoDB 버퍼 풀은 어떻게 작동하며 성능에 중요한 이유는 무엇입니까?InnoDB 버퍼 풀은 어떻게 작동하며 성능에 중요한 이유는 무엇입니까?Apr 09, 2025 am 12:12 AM

innodbbufferpool은 데이터와 색인 페이지를 메모리에로드하여 MySQL 데이터베이스의 성능을 향상시킵니다. 1) 데이터 페이지가 버퍼 풀에로드되어 디스크 I/O를 줄입니다. 2) 더러운 페이지는 정기적으로 디스크로 표시되고 새로 고침됩니다. 3) LRU 알고리즘 관리 데이터 페이지 제거. 4) 읽기 메커니즘은 가능한 데이터 페이지를 미리로드합니다.

MySQL : 초보자를위한 데이터 관리의 용이성MySQL : 초보자를위한 데이터 관리의 용이성Apr 09, 2025 am 12:07 AM

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

MySQL에서 인덱스를 사용하는 것보다 전체 테이블 스캔이 더 빠를 수 있습니까?MySQL에서 인덱스를 사용하는 것보다 전체 테이블 스캔이 더 빠를 수 있습니까?Apr 09, 2025 am 12:05 AM

전체 테이블 스캔은 MySQL에서 인덱스를 사용하는 것보다 빠를 수 있습니다. 특정 사례는 다음과 같습니다. 1) 데이터 볼륨은 작습니다. 2) 쿼리가 많은 양의 데이터를 반환 할 때; 3) 인덱스 열이 매우 선택적이지 않은 경우; 4) 복잡한 쿼리시. 쿼리 계획을 분석하고 인덱스 최적화, 과도한 인덱스를 피하고 정기적으로 테이블을 유지 관리하면 실제 응용 프로그램에서 최상의 선택을 할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.