• Keine Ergebnisse gefunden

Key of an Index

N/A
N/A
Protected

Academic year: 2022

Aktie "Key of an Index"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Database Tuning

Index Tuning

Nikolaus Augsten

University of Salzburg Department of Computer Science

Database Group

Unit 4 – WS 2014/2015

Adapted from “Database Tuning” by Dennis Shasha and Philippe Bonnet.

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 1 / 22

Outline

1 Index Tuning Index Types

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 2 / 22

Index Tuning Index Types

Outline

1 Index Tuning Index Types

Index Tuning Index Types

What is an Index?

Anindexis a data structure that supports efficient access to data:

Set of Records index

Condition on attribute

value

Matching records

(search key)

Index tuningessentialto performance!

Improper index selectioncan lead to:

indexes that are maintained but never used

files that are scanned in order to return a single record multitable joins that run for hours or days

(2)

Key of an Index

Search keyor simply “key” of an index:

single attribute or sequence of attributes

values on key attributes used to access records in table Sequential Key:

value is monotonic with insertion order examples: time stamp, counter Non-sequential Key:

value unrelated to insertion order

examples: social security number, last name

Note: index key different from key in relational theory relational theory: key attributes have unique values index key: not necessarily unique

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 5 / 22

Index Characteristics

Indexes can often be viewed as trees(B+-tree, hash) some nodes are in main memory (e.g., root)

nodes deeper down in tree are less likely to be in main memory Number of levels: number of nodes in root-leaf path

a node is typically a disk block one block read required per level

reading a block costs several milliseconds (involves disk seek) Fanout: number of children a node can have

large fanout means few levels

Overflow strategy: insert into a full noden

B+-tree: splitnintonandn0, both at same distance from root overflow chaining: nstores pointer to new noden0

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 6 / 22

Index Tuning Index Types

Sparse vs. Dense

Sparse index: pointers to disk pages at most one pointer per disk page

usually much less pointers than records P1 P2 Pi

Dense index: pointers to individual records one key per record

usually more keys than sparse index

optimization: store repeating keys only once, followed by pointers

record

record record

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 7 / 22

Index Tuning Index Types

Sparse vs. Dense

Number of pointers:

ptrs in dense index = records per page×ptrs in sparse index Pro sparse: less pointers

typically record size is smaller than page size less pointers result in less levels (and disk accesses) uses less space

Pro dense: index may “cover” query

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 8 / 22

(3)

Covering Index

Covering index:

answers read-only query within index structure fast: data records are not accessed

Example 1: dense index on lastname

SELECT COUNT(lastname) WHERE lastname=’Smith’

Example 2: dense index onA, B, C(in that order) covered query:

SELECT B, C FROM R WHERE A = 5

covered query, but not prefix:

SELECT A, C FROM R WHERE B = 5 non-covered query: Drequires data access SELECT B, D

FROM R WHERE A = 5

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 9 / 22

Clustering vs. Non-Clustering

Clustering indexon attributeX (alsoprimary index)

records are grouped by attributeX on disk B+-tree: records sorted by attributeX only one clustering index per table dense or sparse

Records

Non-clustering index on attributeX (alsosecondary index)

no constraint on table organization more than one index per table

always dense Records

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 10 / 22

Index Tuning Index Types

Clustering Indexes

Can besparse:

fewer pointers than non-clustering index (always dense!) Good formulti-point queries:

equality access on non-unique attribute all result records are on consecutive pages example: look up last name in phone book Good forrange, prefix, orderingqueries:

works if clustering index is implemented asB+-tree

prefix example: look up all last names starting with ’St’ in phone book result records are on consecutive pages

Good forequality join:

fast also for join on non-key attributes index on one table: indexed nested-loop index on both tables: merge-join Overflow pagesreduce efficiency:

if disk page is full, overflowing records go to overflow pages overflow pages require additional disk accesses

Index Tuning Index Types

Equality Join with Clustering Index

Example query:

SELECT Employee.ssnum, Student.course FROM Employee, Student

WHERE Employee.firstname = Student.firstname Index on Emplyee.firstname: use index nested loop join

for each student look up employees with same first name all matching employees are on consecutive pages

Index on both firstname attributes: use merge join read both tables in sorted order and merge (B+-tree) each page read exactly once

works also for hash indexes with same hash function

(4)

Clustering Index and Overflow Pages

Whyoverflow pages?

clustering index stores records on consecutive disk pages insertion between two consecutive pages not possible if disk page is full, overflowing records go to overflow pages Additional disk access for overflow page: reduced speed Overflow pages canresult from:

inserts

updates that change key value

updates that increase record size (e.g., replace NULL by string) Reorganizeindex:

invoke special tool

or simply drop and re-create index

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 13 / 22

Overflow Strategies

Tune free space in disk pages:

Oracle, DB2: pctfree (0 is full), SQLServer: fillfactor(100 is full) free space in page is used for new or growing records

little free space: space efficient, reads are faster much free space: reduced risk of overflows Overflowstrategies:

split: split full page into two half-full pages and link new page e.g.,A→B→C, splittingB results inA→B0→B00→C (SQLServer)

chaining: full page has pointer to overflow page (Oracle)

append: overflowing records of all pages are appended at the end of the table (DB2)

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 14 / 22

Index Tuning Index Types

Non-Clustering Index

Always useful forpoint queries.

Particularly good ifindex covers query.

Critical tables: covering index on all relevant attribute combinations Multi-pointquery (not covered): only goodif query not too selective

nR: number of records returned by query nP: number of disk pages in table

thenR records are uniformly distributed over all pages thus query will read min(nR,nP) disk pages

Index may slow downhighly selective multi-point query:

scan is by factor 2–10 faster than accessing all pages with index thusnR should be significantly smaller thannP

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 15 / 22

Index Tuning Index Types

Non-Clustering Index and Multi-point Queries – Example

Example 1:

records size: 50B page size: 4kB

attributeAtakes 20 different values (evenly distributed among records) does non-clustering index onAhelp?

Evaluation:

nR=n/20 (nis the total number of records) nP=n/80 (80 records per page)

n/20>n/80 thus index does not help Example 2: as above, but record size is 2kB Evaluation:

nR=n/20 (nis the total number of records) nP=n/2 (2 records per page)

n/20<<n/2 thus index might be useful

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 16 / 22

(5)

Clustering vs. Non-Clustering Index

0 0.2 0.4 0.6 0.8 1

SQLServer Oracle DB2

Throughput ratio

clustered nonclustered no index

multi-point query with selectivity 100/1M records (0.01%) clustering index much faster than non-clustering index

full table scan (no index) orders of magnitude slower than index

DB2 UDB V7.1, Oracle 8.1, SQL Server 7 on Windows 2000

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 17 / 22

Covering vs. Non-Covering Index

0 10 20 30 40 50 60 70

SQLServer

Throughput (queries/sec) covering covering - not ordered non clustering clustering

prefix match query on sequence of attributes

covering: index covers query, query condition on prefix

covering, not ordered: index covers query, but condition not prefix non-clustering: non-covering index, query condition on prefix clustering: sparse index, query condition on prefix

SQL Server 7 on Windows 2000

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 18 / 22

Index Tuning Index Types

Non-Clustering vs. Table Scan

0 5 10 15 20 25

% of selected records

Throughput (queries/sec)

scan

non clustering

query: range query

non clustering: non-clustering non-covering index scan: no index, i.e., table scan required

index is faster if less than 15% of the records are selected

Index Tuning Index Types

Index Maintenance - DB2

DB2

0 10 20 30 40 50

0 20 40 60 80 100

% Increase in Table Size Throughput  (queries/sec)

No maintenance Maintenance

query: batch of 100 multi-point queries,pctfree=0 (data pages full) performance degrades with insertion

overflow records simply appended

query traverses index and then scans all overflow records reorganization helps

(6)

Index Maintenance - SQL Server

SQLServer

0 20 40 60 80 100

% Increase in Table Size Throughput (queries/sec)

No maintenance Maintenance

fillfactor=100 (data pages full) performance degrades with insertion

overflow chain maintained for overflowing page extra disk access

reorganization helps

SQL Server 7 on Windows 2000

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 21 / 22

Index Maintenance - Oracle

Oracle

0 20 40 60 80 100

% Increase in Table Size Throughput (queries/sec)

No maintenance

pctfree= 0 (data pages full), performance degrades with insertion all indexes in Oracle are non-clustering

index-organized table is clustered by primary key recreating index does not reorganize table

maintenance: export and re-import table to reorganize :-(

Oracle 8i EE on Windows 2000

Nikolaus Augsten (DIS) DBT – Index Tuning Unit 4 – WS 2014/2015 22 / 22

Referenzen

ÄHNLICHE DOKUMENTE

Prestations: voyage en car de Neuchâtel/ Lausanne/Genève, repas de midi en cours de route, logement en village-vacances WWF situé dans un parc boisé, pension complète, excursion

Que vous soyez un couple, deux amies, une personne seule voire accompagnée d'un ou de deux petits-enfants, vous avez la possibilité de passer 3 semaines de vacances à une

Prestations: Voyage en car venant de Lausanne/Genève, repas aller et retour, logement en hôtel** en pension complète, spectacle gallo-romain à Autun, excursions et visites comme

ISTANBUL - Un rêve d'Orient Prestations: Vols de ligne GenèveIstanbul et retour, transferts, hôtel****, pension complète moins 2 repas, 3 tours de ville d'une demi-journée et

Pour plus de renseignements, vous pouvez vous adresser à l'une des sections romandes AAS ou au Secrétariat général de l'Association Alzheimer Suisse... Genève: Campagne

Il n'est pas possible de donner tous les détails dans cette rubrique, mais vous pouvez obtenir tous les renseignements utiles auprès du secrétariat genevois 022/329 83 84...

These options include additional 320K-byte diskette drives, a Ninchester disk drive, expansion memory boards (vhich can expand the system memory to 769K bytes),

Il est vrai que jadis Louterbourg avoit fait la folie à Paris de s'amouracher d'une fille entretenue et qu'il l'a épousé, ce qui a fait qu'il a été rayé de l'Academie de Beaux