This is a presentation from the DBArtisan and Rapid SQL 2016 product launch. See what's new in these tools for database administrators (DBAs) and database developers. And learn about the revolutionary new Performance IQ tool. See the companion webinar at: http://forms.embarcadero.com/DBArtisan-RapidSQL-2016-Release
2. EMBARCADERO TECHNOLOGIES
DBA’s have problems with:
• Understanding what SQL is running poorly & why
• Correcting poorly performing SQL, before it goes live if possible
• Suspicious/worried about SAN performance
• Concerned about how virtualization hurts/helps
• Uncertain about how to apply new DBMS platform features to
help their situation
• Need great monitoring and alerting
• Are concerned about expanding storage footprint
We want to solve DBA’s and SQL developers major pains
3. EMBARCADERO TECHNOLOGIES
2016 release (September 2015)
Deep performance integrations into DBArtisan & Rapid SQL
Significant SQL IDE enhancements to detect poor SQL performance
Cardinality problems
Data skew issues
Substandard SQL syntax
Inefficient index usage & index suggestions
Full alerting package (+blackouts & non monitoring)
SQL Server monitoring support
Oracle monitoring support
SQL Server repository support
Oracle repository support
6. EMBARCADERO TECHNOLOGIES
Help software engineers and DBA’s write more performant SQL which will
work perfectly in production by showing data cardinality, data skew, table
statistics, index statistics, data churn etc. all from their ACTUAL LIVE DATA.
SQL IDE tips for DBArtisan & Rapid SQL
SELECT EmployeeID,
LastName
FROM EmployeeMaster
WHERE Table Statistics
No of Rows: 356,007
Data Size: 462MB
Index Size: 48MB
Row size: 422 bytes
Rows / page: 19
Fragmentation: 14%
Table scan time: 114 seconds
Table Churn: 1,588 changes/min
Alter statistics / use statistics from another DB
SELECT EmployeeID,
LastName
FROM EmployeeMaster
WHERE Zip = 94001
Column Statistics
No of table rows: 356,007
Column: Zip
Column Type: int (nullable)
Ave. column data length: 4 bytes
No of distinct values: 298 (not very good)
Average cardinality: 1,194 rows
Best cardinality: “98001”- 4 rows
Worst cardinality: “91301” – 146,092 rows
Test performance using worst cardinality
7. 7
SQL Editor screens on Rap/Art to show existing index makeup
Where there are existing indexes on columns then allow the user to
view the index(s) in order to understand their suitability to the query
(which may prompt a query adjustment)
8. 8
SQL Editor screens on Rap/Art to show Index Suggestions
By showing software engineers & DBA’s what indexes they should be adding to make
queries run efficiently.
It also shows the possible downside of adding an index such as index size and the volatility
of the underlying table as well as per column cardinality and data skew.
9. 9
SQL Editor screens on Rap/Art to suggest syntactical
SQL adjustments to improve performance
By showing software engineers & DBA’s one or more of over 200
performance adjustments which could be made in the SQL syntax
to make queries run efficiently.
12. 12
Sample of performance
enhancements - 1
• Quirky Update method (link)
• Alter SUBSTRING (column, 1, nnn) TO column LIKE ‘XXX%‘ to boost performance up to 3X
faster (link)
• Alter YEAR(column) = YYYY TO column BETWEEN ‘1 Jan YYYY’ AND ’31 Dec YYYY’ to boost
performance up to 300X (link)
• Alter order of nested MIN/MAX functions
• Alter column IN (XXX, YYY, ZZZ) TO column BETWEEN XXX AND ZZZ to boost performance
up to 75% when AAA is an integer type column and the IN list has all consecutive elements (link)
• Alter LEFT JOIN TO NOT IN to boost performance up to 12X faster (link)
• Alter DELETE with no WHERE clause to a TRUNCATE
• Alter COALESCE(XXX, N’YYY’) = N’YYY’ TO XXX = N’YYY’ OR XXX IS NULL to boost
performance ~20% (link)
• Alter LIKE with no % or _ wildcards to =
• Alter LEFT (XXX, YYY) = ‘ZZZ’ TO XXX LIKE ‘ZZZ%’ to boost performance up to 300X (link)
• Read forward cursor is not using the “Fast Forward” option, can boost performance well over
100% (link)
• Alter CHARINDEX (‘YYY’, XXX) = 0 TO XXX LIKE ‘YYY%’ to boost performance up to 300X
(link)
13. 13
Sample of performance
enhancements - 2
• Replace temp table creation & usage with table variables to boost performance up to 3X (link) E.G. Alter CREATE
TABLE #tablename(Col1…) TO DECLARE @tablename TABLE (Col1…)
• Cursor has not been correctly closed & de-allocated using DEALLOCATE (cursor name}
• Remove UPPER & LOWER functions if the instance collation isn’t case sensitive.
• If the query has large index or table scans & > 4 cores & MAXDOP < (cores / 3) then suggest raising MAXDOP
Changing MAXDOP setting from 1 to xx will improve query performance dramatically whilst ensuring the query
cant monopolize resources.
• Suggest using columnstore indexes where appropriate. Appropriate places would be on tables with zero
updates/deletes/updates where the query performs large scale index scans where the cardinality of the columns in
the index is somewhat low. (link)
• Alter queries which scan >100 page “fact” tables and join to dimension tables to optimize for using bitmap
filtering by using single column inner joins (link)
• Make use of Star join techniques as well as few-outer-row optimizations to improve query performance by over
100% (link)
• Make use of Windowing functions to dramatically speed up percentile groups, moving averages, largest,
smallest, offsetting, lagging, leading, ranking etc. (link)
• AVG, CHECKSUM_AGG, COUNT, COUNT_BIG, MIN, MAX, SUM, STDEV, STDEVP, VAR, VARP
• User-defined CLR Aggregates (excl. windowing)
• Analytical
• ROW_NUMBER, NTILE, RANK, DENSE_RANK, CUME_DIST, PERCENT_RANK
• Distribution
• PERCENTILE_CONT, PERCENTILE_DISC
• Offset
• LAG, LEAD, FIRST_VALUE, LAST_VALUE
19. EMBARCADERO TECHNOLOGIES
Time travel controls
(to view performance history at any point)
Data & time selector Cog wheel opens up a dialog allowing the user to select
baseline as well as filters/exclusions specific to the current
data source.
26. EMBARCADERO TECHNOLOGIES
Indicating Alerts both globally and per DBMS Instance
EMBARCADERO CONFIDENTIAL
Alerts
Global
alert
status
Alert
status
per
group
Alerts
per
instance
Alert
status
per
instance
Global
alert
status
29. EMBARCADERO TECHNOLOGIES
Embarcadero Platform
ER/Studio Team
Edition
DBArtisan &
Rapid SQL
ER/Studio Team Server
Performance IQ Team
Server
Glossary
Model
Repo
DS Repo DB Auth
Collaboration 24/7
Workstation
Tools
Automation
Business Stakeholders SQL Developers
DBA’s
EMBARCADERO CONFIDENTIAL
31. EMBARCADERO TECHNOLOGIES
31
Join the Revolution…Get Involved
• Learn more about Performance IQ
– http://www.embarcadero.com/products/dbartisan/performanceiq
• Register to attend webinars
– http://www.embarcadero.com/resources/webinars
• Download white papers with content related to Performance
IQ capabilities.
– http://www.embarcadero.com/resources/white-papers/database-
management
• See DBArtisan and Rapid SQL tutorial videos
– http://www.embarcadero.com/products/dbartisan/product-demos