SlideShare ist ein Scribd-Unternehmen logo
1 von 58
#SQLSatATL
War of the Indices- Oracle vs.
SQL Server
Kellyn Pot’Vin-Gorman
#SQLSatATL 2
Kellyn Pot’Vin-Gorman
Technical Intelligence Manager for the Office of CTO,
Delphix
• Multi-platform DBA, (Oracle, MSSQL, MySQL, Sybase,
Postgres…..)
• Oracle ACE Director, (Alumni)
• Oak Table Network
• APEX Women in Technology Award, CTA 2014
• STEM education with Raspberry Pi and Python
• Liaison for Denver SQL Server User Group
• Rocky Mountain Oracle User Group President
• Author, blogger, (http://dbakevlar.com)
#SQLSatATL 3
Agenda
Background1
Platform Translations2
Test Case and Goal3
Code and Discussion4
Analysis and Summary5
#SQLSatATL 4
The What
Azure SQL Database AWS with Oracle 11.2.0.4
#SQLSatATL 5
The Why
• Its interesting…to me, at least.
• VM was an issue, so moved
everything to the cloud.
• Two major players in the
database landscape.
• Good apples to “apfel”
comparison.
#SQLSatATL 6
Translations Graph
#SQLSatATL 7
FILLFACTOR is a setting for indexes in SQL Server. When you
create or rebuild an index, you can tell SQL Server what
percentage of each 8K data page used in the “leaf” level of the
index it should fill up.
Fill Factor in SQL Server
#SQLSatATL 8
PCT Increase in Oracle
PCTFREE is a block storage parameter used to specify how much
space should be left in a database block for future updates. For
example, for PCTFREE=10, Oracle will keep on adding new rows to a
block until it is 90% full. This leaves 10% for future updates (row
expansion). This defaults to 10% for indexes, but can be adjusted via
a index rebuild.
#SQLSatATL 9
SQL Server Index Writes- Not Subject to Page Splits
#SQLSatATL 10
SQL Server Index Processing Impacted by Random
#SQLSatATL 11
Fragmentation Doesn’t Exist in Oracle Indexes
In What Case Would You Rebuild?
• Significant # of logically deleted index nodes.
• Inefficient number of gets per access
So yes, there are times and situations you need to
rebuild.
The goal here is to see where each platform
performs better than the other.
#SQLSatATL 12
Test Case
• Create a table with three columns and two indexes.
• Insert, update and delete different amounts of data.
• check the storage of our index and any
fragmentation, storage anomalies.
• Repeat
• Check the storage repeatedly to see how it has
changed- page splits in SQL Server, leaf block splits
in Oracle
#SQLSatATL 13
Goal
1. Inspect the differences and similarities of
indexing in both platforms
2. The pros and cons of how index data is stored
and used in the database platforms.
http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/
#SQLSatATL 14
First Test, Build and Check
#SQLSatATL 15
Oracle Objects
CREATE TABLE ORA_INDEX_TST
(
C1 NUMBER NOT NULL
,C2 VARCHAR2(255)
,CREATEDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP)
;CREATE INDEX PK_INDEXPS ON ORA_INDEX_TST (C1);
CREATE INDEX IDX_INDEXPS ON ORA_INDEX_TST (C2);
ALTER TABLE ORA_INDEX_TST ADD CONSTRAINT OIT_PK
PRIMARY KEY(C1) USING INDEX PK_INDEXPS;
ALTER INDEX IDX_INDEXPS REBUILD PCTFREE 90 INITRANS 5;
ALTER INDEX PK_INDEXPS REBUILD PCTFREE 90 INITRANS 5;
#SQLSatATL 16
Oracle Support Objects
CREATE SEQUENCE C1_SEQ START WITH 1;
CREATE OR REPLACE TRIGGER C1_BIR
BEFORE INSERT ON ORA_INDEX_TST
FOR EACH ROW
BEGIN
SELECT C1_SEQ.NEXTVAL
INTO :new.C1
FROM DUAL;
END;
/
#SQLSatATL 17
Insert 7 Rows to Fill One Oracle Block
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
VALUES (dbms_random.string('A', 200), SYSDATE);
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
……
……
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
VALUES (dbms_random.string('F', 200), SYSDATE);
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
VALUES (dbms_random.string('G', 200), SYSDATE);
COMMIT;
#SQLSatATL 18
Check the Block
SQL> ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE;
SQL> SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED
FROM INDEX_STATS where NAME='PK_INDEXPS';
LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE PCT_USED
---------- ---------- ----------- ---------- ----------
1 7924 0 1491 19
As expected- 1 leaf block for the seven
rows.
#SQLSatATL 19
Adjust Index and Then Insert 8th Row
ALTER INDEX IDX_INDEXPS REBUILD PCTFREE 90
INITRANS 5;
Yes, we’ve just adjusted the pctfree to 90%!
Consider what this will do to our index storage now that we’ve
rebuilt this allowing for only 10% usage in each block.
Insert the 8th row:
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
VALUES (dbms_random.string(‘H', 200), SYSDATE);
#SQLSatATL 20
After Change to Pct Free
SQL> ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE;
SQL> SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE,
PCT_USED FROM INDEX_STATS where NAME='PK_INDEXPS';
LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE PCT_USED
---------- ---------- ----------- ----------
8 8229 0 2369 32
#SQLSatATL
SQL Server’s Turn
#SQLSatATL 22
SQL Server Objects
CREATE TABLE SQL_INDEX_TST (c1 INT NOT NULL,
c2 CHAR (255),
createdate DATETIME NOT NULL DEFAULT GETDATE());
CREATE INDEX CL2_INDEX_TST ON SQL_INDEX_TST(C2);
GO
ALTER TABLE SQL_INDEX_TST
ADD CONSTRAINT PK_CLINDX_TST PRIMARY KEY NONCLUSTERED (c1);
#SQLSatATL 23
First Interesting Hurdle- SQL Server
Inserts and Updates
may fail due to
challenge of data
beyond range
#SQLSatATL 24
Insert 7 Rows to Fill up Initial SQL Server Page
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (1, 'a');
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (2, 'a');
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (3, 'a');
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (4, 'a');
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (6, 'a');
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (7, 'a');
GO
#SQLSatATL 25
Alter Index Fillfactor and Insert 8th Row
ALTER INDEX CL_INDEX_TST ON dbo.SQL_Index_tst
REBUILD WITH (FILLFACTOR = 10);
GO
Now insert the 8th row in:
INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (8, 'a');
GO
#SQLSatATL 26
Check Statistics and Page Data on Index
SELECT
OBJECT_SCHEMA_NAME(ios.object_id) + '.' +
OBJECT_NAME(ios.object_id) as table_name,
i.name as index_name, leaf_allocation_count,
nonleaf_allocation_count
FROM sys.dm_db_index_operational_stats(DB_ID(),
OBJECT_ID('dbo.SQL_INDEX_TST'),NULL, NULL) ios
INNER JOIN sys.indexes i ON i.object_id =
ios.object_id AND i.index_id = ios.index_id;
#SQLSatATL 27
Results
#SQLSatATL 28
Second Test, Build and Check
#SQLSatATL 29
Data Loads into Oracle
SQL> Begin
For IDS in 1..1000000
Loop
INSERT INTO ORA_INDEX_TST (C2, CREATEDATE)
VALUES (dbms_random.string('X', 200),
SYSDATE);
Commit;
End loop;
End;
/
#SQLSatATL 30
Check Data and Delete Data
SQL> select count(*) from ora_index_tst;
COUNT(*)
----------
1000008
SQL> delete from ora_index_tst
where c2 like '%200%';
437 rows deleted.
SQL> commit;
Commit complete.
10% PCT Free- Time Elapsed 2 minutes, 12 seconds
90% PCT Free- Time Elapsed 7 minutes, 3 seconds
#SQLSatATL 31
Resulting Index Fragmentation and Storage
SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM
INDEX_STATS;
#SQLSatATL 32
Ending Row Count
#SQLSatATL 33
Check Index
#SQLSatATL
SQL Server’s Turn
#SQLSatATL 35
SQL Server Insert
declare @id int
select @id = 9 --already inserted 8 rows
while @id >= 0 and @id <= 1000000
begin
insert into sql_index_tst (c1,c2) values(@id,
'DKUELKJ' + convert(varchar(7), @id))
select @id = @id + 1
end
Default Fill Factor- Elapsed Time: 4 minutes, 43 seconds
10% Fill Factor- Elapsed time: 23 minutes, 18 seconds
#SQLSatATL 36
Check Page Splits in SQL Server
SELECT
OBJECT_SCHEMA_NAME(ios.object_id) + '.' +
OBJECT_NAME(ios.object_id) as table_name
,i.name as index_name
,leaf_allocation_count
,nonleaf_allocation_count
FROM sys.dm_db_index_operational_stats(DB_ID(),
OBJECT_ID('dbo.SQL_Index_tst'),NULL, NULL) ios
INNER JOIN sys.indexes i ON i.object_id = ios.object_id
AND i.index_id = ios.index_id;
#SQLSatATL 37
Page Splits Observed
#SQLSatATL 38
Check Fragmentation in SQL Server
SELECT
OBJECT_SCHEMA_NAME(ips.object_id) + '.' +
OBJECT_NAME(ips.object_id) as table_name
,ips.avg_fragmentation_in_percent
,ips.fragment_count
,page_count
FROM
sys.dm_db_index_physical_stats(DB_ID(),
OBJECT_ID('dbo.SQL_Index_tst'
#SQLSatATL 39
Fragmentation Results
#SQLSatATL 40
Third Test, Build and Check
#SQLSatATL
Clustered Indexes vs. Oracle IOTs
Oracle Index Organized Tables are most similar to
SQL Server Clustered Indexes.
How do those compare?
#SQLSatATL
Index Organized Table, (IOT)
• Variation of a primary b-tree index
• The index IS the table
• Data is sorted
#SQLSatATL
Oracle IOT Syntax
CREATE TABLE ora_tst_iot(
c1 NUMBER,
c2 varchar2(255),
CREATEDATE timestamp DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT pk_ora_iot PRIMARY KEY (c1))
ORGANIZATION INDEX
TABLESPACE users
PCTTHRESHOLD 20
OVERFLOW TABLESPACE users;
#SQLSatATL
Supporting Features
• Created Sequence for PK on C1 column
• Created Trigger to insert next value in C1 on insert.
• The % Threshold set to 20
• No compression
• Loaded from my original table ORA_INDEX_TST
#SQLSatATL
Data Load and Validation
#SQLSatATL
Remove Data-
#SQLSatATL
IOT Vulnerabilities
SQL> SELECT 'Chained or Migrated Rows =
'||value
FROM v$sysstat
WHERE name = 'table fetch continued
row';
Chained or Migrated Rows = 73730
#SQLSatATL
Findings
C2 column has significant data and without C1, has a
difficult time for access.
• Disable trigger for sequence and then load table
with simplified data, then rebuild.
• ALTER TABLE ORA_IOT_TST REBUILD;
#SQLSatATL 49
After Issuing a Move Statement on an IOT
Tablespace
Extent
Block
Row
After Move
Command
#SQLSatATL
After More Updates/Deletes/Inserts
#SQLSatATL
So PCT Free
As discussed, Pct Free is how much free is to be left
at the end of a block…90%...hmm…
#SQLSatATL
Comparisons- Pct Free Vs. Fill Factor
10% Fill Factor in SQL Server and 1 million insert: Elapsed time: 23
minutes, 18 seconds
90% PCTFree in Oracle and 1 million insert: 7 min, 12 seconds
100% Fill Factor in SQL Server and 1 million insert: Elapsed Time: 4
minutes, 43 seconds
0% PCTFree in Oracle and 1 million insert: 1 min, 8 seconds
REBUILD of the Oracle IOT to make it 90% free in each block? Elapsed
Time: 8 hrs, 21 minutes, 12 seconds
#SQLSatATL
And the Winner?
#SQLSatATL
Clustered Index in SQL Server
• Data is physically sorted in clustered index by
default.
• Optimizer usage specific- clustered index seek
• Works best with sequential data, identity columns
and order dates.
• Option to randomize the writes on the index can
deter from hot spots.
#SQLSatATL
SQL Server Negatives
• Heavily vulnerable to fragmentation over standard
Oracle indexing.
• Last Page Insert Latch Contention- not an issue in
Oracle.
• Subject to hotspots, (as discussed.)
• Page Splits- hit performance HARD, especially
tran log.
• Fillfactor is hit or miss config in some systems.
#SQLSatATL
Summary- Clustered Index
Clustered Index:
• Less overhead during transactional processing for
inserts, updates and deletes
• Improved performance on queries of data to be sorted
in sequential order.
• Similar performance for complex queries and less sort
temp usage.
• Clustered Indexes are common place, IOTs have limited
use case.
#SQLSatATL
Summary: IOT
• Will require more maintenance if the IOT experiences
high processing including inserts, updates and deletes.
• DBCC rebuilds of a clustered index uses less resources
and doesn’t impact the transaction log as it does
Oracle’s rollback and archive log.
• It was easier to build the table with a high pct free
storage configuration and then do an insert of the
data, then drop the old table than to do an “alter
move” command.
#SQLSatATL
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle Data Redaction
Oracle Data RedactionOracle Data Redaction
Oracle Data RedactionAlex Zaballa
 
DBA Commands and Concepts That Every Developer Should Know
DBA Commands and Concepts That Every Developer Should KnowDBA Commands and Concepts That Every Developer Should Know
DBA Commands and Concepts That Every Developer Should KnowAlex Zaballa
 
Oracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesOracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesAlex Zaballa
 
Oracle Database 12c - Data Redaction
Oracle Database 12c - Data RedactionOracle Database 12c - Data Redaction
Oracle Database 12c - Data RedactionAlex Zaballa
 
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should KnowDBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should KnowAlex Zaballa
 
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...Alex Zaballa
 
Oracle Data redaction - GUOB - OTN TOUR LA - 2015
Oracle Data redaction - GUOB - OTN TOUR LA - 2015Oracle Data redaction - GUOB - OTN TOUR LA - 2015
Oracle Data redaction - GUOB - OTN TOUR LA - 2015Alex Zaballa
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2Alex Zaballa
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsDave Stokes
 
Oracle SQL Tuning for Day-to-Day Data Warehouse Support
Oracle SQL Tuning for Day-to-Day Data Warehouse SupportOracle SQL Tuning for Day-to-Day Data Warehouse Support
Oracle SQL Tuning for Day-to-Day Data Warehouse Supportnkarag
 
Oracle Data Redaction
Oracle Data RedactionOracle Data Redaction
Oracle Data RedactionAlex Zaballa
 
Oracle Data Redaction - UKOUG - TECH14
Oracle Data Redaction - UKOUG - TECH14Oracle Data Redaction - UKOUG - TECH14
Oracle Data Redaction - UKOUG - TECH14Alex Zaballa
 
MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017Dave Stokes
 
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...Alex Zaballa
 
Confoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsConfoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsDave Stokes
 
PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)Noriyoshi Shinoda
 
Oracle Data Redaction - EOUC
Oracle Data Redaction - EOUCOracle Data Redaction - EOUC
Oracle Data Redaction - EOUCAlex Zaballa
 

Was ist angesagt? (18)

Oracle Data Redaction
Oracle Data RedactionOracle Data Redaction
Oracle Data Redaction
 
DBA Commands and Concepts That Every Developer Should Know
DBA Commands and Concepts That Every Developer Should KnowDBA Commands and Concepts That Every Developer Should Know
DBA Commands and Concepts That Every Developer Should Know
 
Oracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New FeaturesOracle Database 12.1.0.2 New Features
Oracle Database 12.1.0.2 New Features
 
Oracle Database 12c - Data Redaction
Oracle Database 12c - Data RedactionOracle Database 12c - Data Redaction
Oracle Database 12c - Data Redaction
 
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should KnowDBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
DBA Brasil 1.0 - DBA Commands and Concepts That Every Developer Should Know
 
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c Tuning Fea...
 
Oracle Data redaction - GUOB - OTN TOUR LA - 2015
Oracle Data redaction - GUOB - OTN TOUR LA - 2015Oracle Data redaction - GUOB - OTN TOUR LA - 2015
Oracle Data redaction - GUOB - OTN TOUR LA - 2015
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2
 
Advanced MySQL Query Optimizations
Advanced MySQL Query OptimizationsAdvanced MySQL Query Optimizations
Advanced MySQL Query Optimizations
 
Oracle SQL Tuning for Day-to-Day Data Warehouse Support
Oracle SQL Tuning for Day-to-Day Data Warehouse SupportOracle SQL Tuning for Day-to-Day Data Warehouse Support
Oracle SQL Tuning for Day-to-Day Data Warehouse Support
 
Oracle Data Redaction
Oracle Data RedactionOracle Data Redaction
Oracle Data Redaction
 
Oracle Data Redaction - UKOUG - TECH14
Oracle Data Redaction - UKOUG - TECH14Oracle Data Redaction - UKOUG - TECH14
Oracle Data Redaction - UKOUG - TECH14
 
MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017MySQL Replication Evolution -- Confoo Montreal 2017
MySQL Replication Evolution -- Confoo Montreal 2017
 
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
OTN TOUR 2016 - Oracle Database 12c - The Best Oracle Database 12c New Featur...
 
Confoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & HistogramsConfoo 2021 - MySQL Indexes & Histograms
Confoo 2021 - MySQL Indexes & Histograms
 
Les10
Les10Les10
Les10
 
PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)
 
Oracle Data Redaction - EOUC
Oracle Data Redaction - EOUCOracle Data Redaction - EOUC
Oracle Data Redaction - EOUC
 

Ähnlich wie Oracle vs. SQL Server- War of the Indices

Oracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c - New Features for Developers and DBAsOracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c - New Features for Developers and DBAsAlex Zaballa
 
War of the Indices- SQL Server and Oracle
War of the Indices-  SQL Server and OracleWar of the Indices-  SQL Server and Oracle
War of the Indices- SQL Server and OracleKellyn Pot'Vin-Gorman
 
An Approach to Sql tuning - Part 1
An Approach to Sql tuning - Part 1An Approach to Sql tuning - Part 1
An Approach to Sql tuning - Part 1Navneet Upneja
 
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015
Oracle Database 12c  New Features for Developers and DBAs - OTN TOUR LA 2015Oracle Database 12c  New Features for Developers and DBAs - OTN TOUR LA 2015
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015Alex Zaballa
 
Less08_Schema Advanced Databases and Management.pptx
Less08_Schema Advanced Databases and Management.pptxLess08_Schema Advanced Databases and Management.pptx
Less08_Schema Advanced Databases and Management.pptxMurtazaMughal13
 
从 Oracle 合并到 my sql npr 实例分析
从 Oracle 合并到 my sql   npr 实例分析从 Oracle 合并到 my sql   npr 实例分析
从 Oracle 合并到 my sql npr 实例分析YUCHENG HU
 
Checking clustering factor to detect row migration
Checking clustering factor to detect row migrationChecking clustering factor to detect row migration
Checking clustering factor to detect row migrationHeribertus Bramundito
 
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...Alex Zaballa
 
Performance tuning
Performance tuningPerformance tuning
Performance tuningami111
 
Oracle Query Optimizer - An Introduction
Oracle Query Optimizer - An IntroductionOracle Query Optimizer - An Introduction
Oracle Query Optimizer - An Introductionadryanbub
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guidelineSidney Chen
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2Alex Zaballa
 
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...Jürgen Ambrosi
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)Dave Stokes
 
Optimizing applications and database performance
Optimizing applications and database performanceOptimizing applications and database performance
Optimizing applications and database performanceInam Bukhary
 
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Alex Zaballa
 
Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Massimo Cenci
 
Avoiding cursors with sql server 2005 tech republic
Avoiding cursors with sql server 2005   tech republicAvoiding cursors with sql server 2005   tech republic
Avoiding cursors with sql server 2005 tech republicKaing Menglieng
 

Ähnlich wie Oracle vs. SQL Server- War of the Indices (20)

Oracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c - New Features for Developers and DBAsOracle Database 12c - New Features for Developers and DBAs
Oracle Database 12c - New Features for Developers and DBAs
 
War of the Indices- SQL Server and Oracle
War of the Indices-  SQL Server and OracleWar of the Indices-  SQL Server and Oracle
War of the Indices- SQL Server and Oracle
 
Oracle SQL Tuning
Oracle SQL TuningOracle SQL Tuning
Oracle SQL Tuning
 
An Approach to Sql tuning - Part 1
An Approach to Sql tuning - Part 1An Approach to Sql tuning - Part 1
An Approach to Sql tuning - Part 1
 
Rdbms day3
Rdbms day3Rdbms day3
Rdbms day3
 
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015
Oracle Database 12c  New Features for Developers and DBAs - OTN TOUR LA 2015Oracle Database 12c  New Features for Developers and DBAs - OTN TOUR LA 2015
Oracle Database 12c New Features for Developers and DBAs - OTN TOUR LA 2015
 
Less08_Schema Advanced Databases and Management.pptx
Less08_Schema Advanced Databases and Management.pptxLess08_Schema Advanced Databases and Management.pptx
Less08_Schema Advanced Databases and Management.pptx
 
从 Oracle 合并到 my sql npr 实例分析
从 Oracle 合并到 my sql   npr 实例分析从 Oracle 合并到 my sql   npr 实例分析
从 Oracle 合并到 my sql npr 实例分析
 
Checking clustering factor to detect row migration
Checking clustering factor to detect row migrationChecking clustering factor to detect row migration
Checking clustering factor to detect row migration
 
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
 
Performance tuning
Performance tuningPerformance tuning
Performance tuning
 
Oracle Query Optimizer - An Introduction
Oracle Query Optimizer - An IntroductionOracle Query Optimizer - An Introduction
Oracle Query Optimizer - An Introduction
 
Sql tuning guideline
Sql tuning guidelineSql tuning guideline
Sql tuning guideline
 
DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2DBA Commands and Concepts That Every Developer Should Know - Part 2
DBA Commands and Concepts That Every Developer Should Know - Part 2
 
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
2° Ciclo Microsoft CRUI 3° Sessione: l'evoluzione delle piattaforme tecnologi...
 
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
MySQL 8 -- A new beginning : Sunshine PHP/PHP UK (updated)
 
Optimizing applications and database performance
Optimizing applications and database performanceOptimizing applications and database performance
Optimizing applications and database performance
 
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
Oracle Database 12c - The Best Oracle Database 12c Tuning Features for Develo...
 
Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3Data Warehouse and Business Intelligence - Recipe 3
Data Warehouse and Business Intelligence - Recipe 3
 
Avoiding cursors with sql server 2005 tech republic
Avoiding cursors with sql server 2005   tech republicAvoiding cursors with sql server 2005   tech republic
Avoiding cursors with sql server 2005 tech republic
 

Mehr von Kellyn Pot'Vin-Gorman

Redgate_summit_atl_kgorman_intersection.pptx
Redgate_summit_atl_kgorman_intersection.pptxRedgate_summit_atl_kgorman_intersection.pptx
Redgate_summit_atl_kgorman_intersection.pptxKellyn Pot'Vin-Gorman
 
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptx
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptxSQLSatOregon_kgorman_keynote_NIAIMLEC.pptx
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptxKellyn Pot'Vin-Gorman
 
Turning ADHD into "Awesome Dynamic Highly Dependable"
Turning ADHD into "Awesome Dynamic Highly Dependable"Turning ADHD into "Awesome Dynamic Highly Dependable"
Turning ADHD into "Awesome Dynamic Highly Dependable"Kellyn Pot'Vin-Gorman
 
Cepta The Future of Data with Power BI
Cepta The Future of Data with Power BICepta The Future of Data with Power BI
Cepta The Future of Data with Power BIKellyn Pot'Vin-Gorman
 
Pass Summit Linux Scripting for the Microsoft Professional
Pass Summit Linux Scripting for the Microsoft ProfessionalPass Summit Linux Scripting for the Microsoft Professional
Pass Summit Linux Scripting for the Microsoft ProfessionalKellyn Pot'Vin-Gorman
 
PASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksPASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksKellyn Pot'Vin-Gorman
 
Power BI with Essbase in the Oracle Cloud
Power BI with Essbase in the Oracle CloudPower BI with Essbase in the Oracle Cloud
Power BI with Essbase in the Oracle CloudKellyn Pot'Vin-Gorman
 
ODTUG Leadership Talk- WIT and Sponsorship
ODTUG Leadership Talk-  WIT and SponsorshipODTUG Leadership Talk-  WIT and Sponsorship
ODTUG Leadership Talk- WIT and SponsorshipKellyn Pot'Vin-Gorman
 
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys  How to Build a Successful Microsoft DevOps Including the DataDevOps and Decoys  How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the DataKellyn Pot'Vin-Gorman
 

Mehr von Kellyn Pot'Vin-Gorman (20)

Redgate_summit_atl_kgorman_intersection.pptx
Redgate_summit_atl_kgorman_intersection.pptxRedgate_summit_atl_kgorman_intersection.pptx
Redgate_summit_atl_kgorman_intersection.pptx
 
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptx
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptxSQLSatOregon_kgorman_keynote_NIAIMLEC.pptx
SQLSatOregon_kgorman_keynote_NIAIMLEC.pptx
 
Boston_sql_kegorman_highIO.pptx
Boston_sql_kegorman_highIO.pptxBoston_sql_kegorman_highIO.pptx
Boston_sql_kegorman_highIO.pptx
 
Oracle on Azure IaaS 2023 Update
Oracle on Azure IaaS 2023 UpdateOracle on Azure IaaS 2023 Update
Oracle on Azure IaaS 2023 Update
 
IaaS for DBAs in Azure
IaaS for DBAs in AzureIaaS for DBAs in Azure
IaaS for DBAs in Azure
 
Being Successful with ADHD
Being Successful with ADHDBeing Successful with ADHD
Being Successful with ADHD
 
Azure DBA with IaaS
Azure DBA with IaaSAzure DBA with IaaS
Azure DBA with IaaS
 
Turning ADHD into "Awesome Dynamic Highly Dependable"
Turning ADHD into "Awesome Dynamic Highly Dependable"Turning ADHD into "Awesome Dynamic Highly Dependable"
Turning ADHD into "Awesome Dynamic Highly Dependable"
 
PASS Summit 2020
PASS Summit 2020PASS Summit 2020
PASS Summit 2020
 
DevOps in Silos
DevOps in SilosDevOps in Silos
DevOps in Silos
 
Azure Databases with IaaS
Azure Databases with IaaSAzure Databases with IaaS
Azure Databases with IaaS
 
How to Win When Migrating to Azure
How to Win When Migrating to AzureHow to Win When Migrating to Azure
How to Win When Migrating to Azure
 
Securing Power BI Data
Securing Power BI DataSecuring Power BI Data
Securing Power BI Data
 
Cepta The Future of Data with Power BI
Cepta The Future of Data with Power BICepta The Future of Data with Power BI
Cepta The Future of Data with Power BI
 
Pass Summit Linux Scripting for the Microsoft Professional
Pass Summit Linux Scripting for the Microsoft ProfessionalPass Summit Linux Scripting for the Microsoft Professional
Pass Summit Linux Scripting for the Microsoft Professional
 
Taming the shrew Power BI
Taming the shrew Power BITaming the shrew Power BI
Taming the shrew Power BI
 
PASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and TricksPASS 24HOP Linux Scripting Tips and Tricks
PASS 24HOP Linux Scripting Tips and Tricks
 
Power BI with Essbase in the Oracle Cloud
Power BI with Essbase in the Oracle CloudPower BI with Essbase in the Oracle Cloud
Power BI with Essbase in the Oracle Cloud
 
ODTUG Leadership Talk- WIT and Sponsorship
ODTUG Leadership Talk-  WIT and SponsorshipODTUG Leadership Talk-  WIT and Sponsorship
ODTUG Leadership Talk- WIT and Sponsorship
 
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys  How to Build a Successful Microsoft DevOps Including the DataDevOps and Decoys  How to Build a Successful Microsoft DevOps Including the Data
DevOps and Decoys How to Build a Successful Microsoft DevOps Including the Data
 

Kürzlich hochgeladen

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Kürzlich hochgeladen (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

Oracle vs. SQL Server- War of the Indices

  • 1. #SQLSatATL War of the Indices- Oracle vs. SQL Server Kellyn Pot’Vin-Gorman
  • 2. #SQLSatATL 2 Kellyn Pot’Vin-Gorman Technical Intelligence Manager for the Office of CTO, Delphix • Multi-platform DBA, (Oracle, MSSQL, MySQL, Sybase, Postgres…..) • Oracle ACE Director, (Alumni) • Oak Table Network • APEX Women in Technology Award, CTA 2014 • STEM education with Raspberry Pi and Python • Liaison for Denver SQL Server User Group • Rocky Mountain Oracle User Group President • Author, blogger, (http://dbakevlar.com)
  • 3. #SQLSatATL 3 Agenda Background1 Platform Translations2 Test Case and Goal3 Code and Discussion4 Analysis and Summary5
  • 4. #SQLSatATL 4 The What Azure SQL Database AWS with Oracle 11.2.0.4
  • 5. #SQLSatATL 5 The Why • Its interesting…to me, at least. • VM was an issue, so moved everything to the cloud. • Two major players in the database landscape. • Good apples to “apfel” comparison.
  • 7. #SQLSatATL 7 FILLFACTOR is a setting for indexes in SQL Server. When you create or rebuild an index, you can tell SQL Server what percentage of each 8K data page used in the “leaf” level of the index it should fill up. Fill Factor in SQL Server
  • 8. #SQLSatATL 8 PCT Increase in Oracle PCTFREE is a block storage parameter used to specify how much space should be left in a database block for future updates. For example, for PCTFREE=10, Oracle will keep on adding new rows to a block until it is 90% full. This leaves 10% for future updates (row expansion). This defaults to 10% for indexes, but can be adjusted via a index rebuild.
  • 9. #SQLSatATL 9 SQL Server Index Writes- Not Subject to Page Splits
  • 10. #SQLSatATL 10 SQL Server Index Processing Impacted by Random
  • 11. #SQLSatATL 11 Fragmentation Doesn’t Exist in Oracle Indexes In What Case Would You Rebuild? • Significant # of logically deleted index nodes. • Inefficient number of gets per access So yes, there are times and situations you need to rebuild. The goal here is to see where each platform performs better than the other.
  • 12. #SQLSatATL 12 Test Case • Create a table with three columns and two indexes. • Insert, update and delete different amounts of data. • check the storage of our index and any fragmentation, storage anomalies. • Repeat • Check the storage repeatedly to see how it has changed- page splits in SQL Server, leaf block splits in Oracle
  • 13. #SQLSatATL 13 Goal 1. Inspect the differences and similarities of indexing in both platforms 2. The pros and cons of how index data is stored and used in the database platforms. http://dbakevlar.com/2017/04/oracle-sql-server-index-comparison/
  • 14. #SQLSatATL 14 First Test, Build and Check
  • 15. #SQLSatATL 15 Oracle Objects CREATE TABLE ORA_INDEX_TST ( C1 NUMBER NOT NULL ,C2 VARCHAR2(255) ,CREATEDATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP) ;CREATE INDEX PK_INDEXPS ON ORA_INDEX_TST (C1); CREATE INDEX IDX_INDEXPS ON ORA_INDEX_TST (C2); ALTER TABLE ORA_INDEX_TST ADD CONSTRAINT OIT_PK PRIMARY KEY(C1) USING INDEX PK_INDEXPS; ALTER INDEX IDX_INDEXPS REBUILD PCTFREE 90 INITRANS 5; ALTER INDEX PK_INDEXPS REBUILD PCTFREE 90 INITRANS 5;
  • 16. #SQLSatATL 16 Oracle Support Objects CREATE SEQUENCE C1_SEQ START WITH 1; CREATE OR REPLACE TRIGGER C1_BIR BEFORE INSERT ON ORA_INDEX_TST FOR EACH ROW BEGIN SELECT C1_SEQ.NEXTVAL INTO :new.C1 FROM DUAL; END; /
  • 17. #SQLSatATL 17 Insert 7 Rows to Fill One Oracle Block INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) VALUES (dbms_random.string('A', 200), SYSDATE); INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) …… …… INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) VALUES (dbms_random.string('F', 200), SYSDATE); INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) VALUES (dbms_random.string('G', 200), SYSDATE); COMMIT;
  • 18. #SQLSatATL 18 Check the Block SQL> ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE; SQL> SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM INDEX_STATS where NAME='PK_INDEXPS'; LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE PCT_USED ---------- ---------- ----------- ---------- ---------- 1 7924 0 1491 19 As expected- 1 leaf block for the seven rows.
  • 19. #SQLSatATL 19 Adjust Index and Then Insert 8th Row ALTER INDEX IDX_INDEXPS REBUILD PCTFREE 90 INITRANS 5; Yes, we’ve just adjusted the pctfree to 90%! Consider what this will do to our index storage now that we’ve rebuilt this allowing for only 10% usage in each block. Insert the 8th row: INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) VALUES (dbms_random.string(‘H', 200), SYSDATE);
  • 20. #SQLSatATL 20 After Change to Pct Free SQL> ANALYZE INDEX PK_INDEXPS VALIDATE STRUCTURE; SQL> SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM INDEX_STATS where NAME='PK_INDEXPS'; LF_BLKS LF_BLK_LEN DEL_LF_ROWS USED_SPACE PCT_USED ---------- ---------- ----------- ---------- 8 8229 0 2369 32
  • 22. #SQLSatATL 22 SQL Server Objects CREATE TABLE SQL_INDEX_TST (c1 INT NOT NULL, c2 CHAR (255), createdate DATETIME NOT NULL DEFAULT GETDATE()); CREATE INDEX CL2_INDEX_TST ON SQL_INDEX_TST(C2); GO ALTER TABLE SQL_INDEX_TST ADD CONSTRAINT PK_CLINDX_TST PRIMARY KEY NONCLUSTERED (c1);
  • 23. #SQLSatATL 23 First Interesting Hurdle- SQL Server Inserts and Updates may fail due to challenge of data beyond range
  • 24. #SQLSatATL 24 Insert 7 Rows to Fill up Initial SQL Server Page INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (1, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (2, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (3, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (4, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (6, 'a'); INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (7, 'a'); GO
  • 25. #SQLSatATL 25 Alter Index Fillfactor and Insert 8th Row ALTER INDEX CL_INDEX_TST ON dbo.SQL_Index_tst REBUILD WITH (FILLFACTOR = 10); GO Now insert the 8th row in: INSERT INTO SQL_INDEX_TST(c1,c2) VALUES (8, 'a'); GO
  • 26. #SQLSatATL 26 Check Statistics and Page Data on Index SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name, i.name as index_name, leaf_allocation_count, nonleaf_allocation_count FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('dbo.SQL_INDEX_TST'),NULL, NULL) ios INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id;
  • 28. #SQLSatATL 28 Second Test, Build and Check
  • 29. #SQLSatATL 29 Data Loads into Oracle SQL> Begin For IDS in 1..1000000 Loop INSERT INTO ORA_INDEX_TST (C2, CREATEDATE) VALUES (dbms_random.string('X', 200), SYSDATE); Commit; End loop; End; /
  • 30. #SQLSatATL 30 Check Data and Delete Data SQL> select count(*) from ora_index_tst; COUNT(*) ---------- 1000008 SQL> delete from ora_index_tst where c2 like '%200%'; 437 rows deleted. SQL> commit; Commit complete. 10% PCT Free- Time Elapsed 2 minutes, 12 seconds 90% PCT Free- Time Elapsed 7 minutes, 3 seconds
  • 31. #SQLSatATL 31 Resulting Index Fragmentation and Storage SELECT LF_BLKS, LF_BLK_LEN, DEL_LF_ROWS,USED_SPACE, PCT_USED FROM INDEX_STATS;
  • 35. #SQLSatATL 35 SQL Server Insert declare @id int select @id = 9 --already inserted 8 rows while @id >= 0 and @id <= 1000000 begin insert into sql_index_tst (c1,c2) values(@id, 'DKUELKJ' + convert(varchar(7), @id)) select @id = @id + 1 end Default Fill Factor- Elapsed Time: 4 minutes, 43 seconds 10% Fill Factor- Elapsed time: 23 minutes, 18 seconds
  • 36. #SQLSatATL 36 Check Page Splits in SQL Server SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name ,i.name as index_name ,leaf_allocation_count ,nonleaf_allocation_count FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('dbo.SQL_Index_tst'),NULL, NULL) ios INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id;
  • 38. #SQLSatATL 38 Check Fragmentation in SQL Server SELECT OBJECT_SCHEMA_NAME(ips.object_id) + '.' + OBJECT_NAME(ips.object_id) as table_name ,ips.avg_fragmentation_in_percent ,ips.fragment_count ,page_count FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID('dbo.SQL_Index_tst'
  • 40. #SQLSatATL 40 Third Test, Build and Check
  • 41. #SQLSatATL Clustered Indexes vs. Oracle IOTs Oracle Index Organized Tables are most similar to SQL Server Clustered Indexes. How do those compare?
  • 42. #SQLSatATL Index Organized Table, (IOT) • Variation of a primary b-tree index • The index IS the table • Data is sorted
  • 43. #SQLSatATL Oracle IOT Syntax CREATE TABLE ora_tst_iot( c1 NUMBER, c2 varchar2(255), CREATEDATE timestamp DEFAULT CURRENT_TIMESTAMP, CONSTRAINT pk_ora_iot PRIMARY KEY (c1)) ORGANIZATION INDEX TABLESPACE users PCTTHRESHOLD 20 OVERFLOW TABLESPACE users;
  • 44. #SQLSatATL Supporting Features • Created Sequence for PK on C1 column • Created Trigger to insert next value in C1 on insert. • The % Threshold set to 20 • No compression • Loaded from my original table ORA_INDEX_TST
  • 47. #SQLSatATL IOT Vulnerabilities SQL> SELECT 'Chained or Migrated Rows = '||value FROM v$sysstat WHERE name = 'table fetch continued row'; Chained or Migrated Rows = 73730
  • 48. #SQLSatATL Findings C2 column has significant data and without C1, has a difficult time for access. • Disable trigger for sequence and then load table with simplified data, then rebuild. • ALTER TABLE ORA_IOT_TST REBUILD;
  • 49. #SQLSatATL 49 After Issuing a Move Statement on an IOT Tablespace Extent Block Row After Move Command
  • 51. #SQLSatATL So PCT Free As discussed, Pct Free is how much free is to be left at the end of a block…90%...hmm…
  • 52. #SQLSatATL Comparisons- Pct Free Vs. Fill Factor 10% Fill Factor in SQL Server and 1 million insert: Elapsed time: 23 minutes, 18 seconds 90% PCTFree in Oracle and 1 million insert: 7 min, 12 seconds 100% Fill Factor in SQL Server and 1 million insert: Elapsed Time: 4 minutes, 43 seconds 0% PCTFree in Oracle and 1 million insert: 1 min, 8 seconds REBUILD of the Oracle IOT to make it 90% free in each block? Elapsed Time: 8 hrs, 21 minutes, 12 seconds
  • 54. #SQLSatATL Clustered Index in SQL Server • Data is physically sorted in clustered index by default. • Optimizer usage specific- clustered index seek • Works best with sequential data, identity columns and order dates. • Option to randomize the writes on the index can deter from hot spots.
  • 55. #SQLSatATL SQL Server Negatives • Heavily vulnerable to fragmentation over standard Oracle indexing. • Last Page Insert Latch Contention- not an issue in Oracle. • Subject to hotspots, (as discussed.) • Page Splits- hit performance HARD, especially tran log. • Fillfactor is hit or miss config in some systems.
  • 56. #SQLSatATL Summary- Clustered Index Clustered Index: • Less overhead during transactional processing for inserts, updates and deletes • Improved performance on queries of data to be sorted in sequential order. • Similar performance for complex queries and less sort temp usage. • Clustered Indexes are common place, IOTs have limited use case.
  • 57. #SQLSatATL Summary: IOT • Will require more maintenance if the IOT experiences high processing including inserts, updates and deletes. • DBCC rebuilds of a clustered index uses less resources and doesn’t impact the transaction log as it does Oracle’s rollback and archive log. • It was easier to build the table with a high pct free storage configuration and then do an insert of the data, then drop the old table than to do an “alter move” command.

Hinweis der Redaktion

  1. These are just basic storage features we’re testing, so no concerns about using either of these. Both are hosted in the cloud.
  2. This was based off research done between Paul Randall’s work, which then created interest for me to compare to Oracle’s Richard Foote. Both focus on index performance and I was able to adapt their work to perform a comparison. It isn’t a true apple to apple comparison, but I do think it helps to understand the differences with respect to each platform. This is based off two major players in the Database realm, (I may introduce MySQL or another database to make it more interesting in the future.) but had fun moving it from my local VMs to Amazon and Azure. My Amazon environment is busy being used for a huge demonstration build for my Oracle Open World talk, so I had to scour my index play from it to ensure I didn’t impact what my partner from another company was building.
  3. Main translations that will be required for this session This is what all DBAs think of when we hear IOT. Not Internet of Things, but Index Organized Table. The reuse of acronyms will be the death of us all. It’s the closest thing to what SQL Server uses for it’s initial index on any table. Where data sorts are almost expected on the first, indexed column, Oracle invests highly on temp “tablespace”, (similar to filegroups in SQL Server) which performs all sorts and hashes, etc. that won’t fit inside the PGA, (Process Global Area) of the SGA, (System Global Area) which are separated areas of memory to perform tasks. SQL Server uses a Temp database to perform similar processing. I’ll skip over the next one, as we’ll dig into these in a moment. Although Oracle and SQL Server has Sequences, I used older terminology and syntax here and I wanted to point that out, as with dbms_random, which is a built in package, (group of procedures, etc.) to populate data in Oracle. A page and a block is very similar and then we have the AWR and DMVs, which are very similar, but Oracle saves off aggregates of this performance data long term, 1 hr, 1 week, 30 days, 1 year and DMVs of course, have some data that is only cached and must be called with functions.
  4. The default for Oracle versions 11g and DB12c is 10% Oracle rarely would recommend you change this, but many old school DBAs still mess with this setting and I’ve come across many databases that have been upgraded over the years that still have object with odd settings for individual objects, (tables and indexes.)
  5. The Page Splits/sec counter is one of the "piece of string" counters for which no absolute value should be assumed a breaking point for performance challenges. The counter can vary depending on table size, density, index depth, workload and workload type. Page Splits are an occurance on clustered indexes, which are an advanced feature for indexing as a whole and a standard feature for SQL Server. A split happens, as shown here, when there isn’t enough room in a page and the data needs to write to the beginning of a new page. SQL Server needs to hold a latch for an extended period of time to alocate the new latch, copy data from the old page to the new page and then write the new data to the new page. SQL Server can also take additional latches on the intermediate index pages while in wait. This is the reason that rebuilds of indexes is still a common task in MSSQL. This is a higher latency wait when concurrency is added to the mix.
  6. From the power dynamic mgnt view, dm_db_index_usage, we can locate when there are indexes that are fragmented and impact performance in MSSQL.
  7. Oracle leaves "dead" index nodes in the index when rows are deleted. While rebuilding indexes is a topic that’s heavily debated, there are some poor coding choices or application processing that can offer a reason for index rebuilds. You’ll come across an index that’s space consumption is larger than the table is sources from. This is rare though and as I said, it can be resolved by fixing the code or the application code.
  8. We’ll do this a number of times as we simulate poor processing that would cause issues in page splits, data storage and impact to performance.
  9. Create table, primary key on C1 to be populated by a sequence and trigger and index on C2
  10. Create Sequence and Trigger to insert before each row.
  11. Insert in 7 rows to fill up one block. Because I have a sequence and trigger in place, I only need to add the random data, 200 char and the current date.
  12. Notice the fillfactor is now 10 and insert in one more row…
  13. Insert 1 million rows
  14. This is the first 8 rows from the initial test and the 1 million from the second test. Now delete rows where c2 includes the value of 200
  15. Notice our leaf blocks now and our used space.
  16. Our table has grown substantially from where we’ve started with a number of load processes and transactions to create fragmentation, storage changes, etc. And we show, we’ve deleted the rows we desired.
  17. Let’s load another 1 million rows into our Azure table with the clustered index.
  18. Thanks to Paul Randall for much of the original research that I was able to then build comparisons to Richard Foote’s research on the Oracle side.
  19. Notice the inserted “junk data” we’re using for our examples. Using our IOT, we’ll remove rows from the middle of the table.
  20. Vs. an index rebuild, we need to use a table rebuild statement here, since the INDEX IS a TABLE, as demonstrated here. Considering the amount of rows and not just the rows need to be compressed, but also sorted for an IOT, this will take some time.