Teradata SQL To See Skew Of All Tables In a Database

Teradata - Best Decision Possible

If you have to look for skew in Teradata tables in a particular database, one way to do it is to use the Teradata Administrator visual tool and right-click a table name and select “Space Summary.” That’s good for inspecting a few tables (less than 10 to 20), but if you have hundreds of tables in database that you need to inspect that method can get quite cumbersome.

Below is SQL to list all the tables in a specified database and rank by skew factor high to low. The higher the number (between 0 and 100) the worse the data in the table is skewed. A skew of 100 means data exists only on 1 AMP (unit of parallelism). A skew of 0 means data is perfectly distributed amongst all the AMPS on the system. For the Teradata System to perform optimally you want to get as even distribution across all the units of parallelism (AMPs) as you can. You will hardly see perfect distribution in the real world, but you can get really, really close to it. Anything under a skew factor of 10 should be OK, but your mileage may vary.

You can issue the SQL below in BTEQ, SQL Assistant, or any other tool you have connected to a Teradata database. Copy the SQL and replace the PUT_YOUR_DATABASE_NAME_HERE with the name of the database you wish to inspect and remember to keep the ‘single quotes’ around the database name when issuing the SQL.

Select
 DatabaseName
 ,Tablename
 ,SUM(CurrentPerm) AS CurrentPerm
 ,SUM(PeakPerm) AS PeakPerm
 , 100-(AVG(CurrentPerm)/MAX(CurrentPerm)*100) AS Skewfactor
 From
 DBC.TableSize
 Where
 DatabaseName = 'PUT_YOUR_DATABASE_NAME_HERE'
 Group By
 1,2
 Order BY
 Skewfactor desc
 ;

James T. Scoggins

You can leave a response, or trackback from your own site.

Leave a Reply

Subscribe to RSS Feed Follow me on Twitter!