SlideShare a Scribd company logo
1 of 36
Download to read offline
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Tomas Vondra <tomas.vondra@2ndquadrant.com>
CREATE STATISTICS
What is it for?
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Agenda
●
Quick intro into planning and estimates.
●
Estimates with correlated columns.
●
CREATE STATISTICS to the rescue!
– functional dependencies
– ndistinct
– MCV lists
●
Future improvements.
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
ZIP_CODES
CREATE TABLE zip_codes (
postal_code INT,
place_name VARCHAR(180),
state_name VARCHAR(100),
county_name VARCHAR(100),
community_name VARCHAR(100),
latitude REAL,
longitude REAL
);
cat create-table.sql | psql test
cat zip-codes-gb.csv | psql test -c "copy zip_codes from stdin"
-- http://download.geonames.org/export/zip/
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..42175.91 rows=14028 width=67)
(actual rows=13889 loops=1)
Filter: ((place_name)::text = 'Manchester'::text)
Rows Removed by Filter: 1683064
Planning Time: 0.113 ms
Execution Time: 151.340 ms
(5 rows)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
reltuples , relpages
SELECT reltuples, relpages FROM pg_class
WHERE relname = 'zip_codes';
reltuples | relpages
--------------+----------
1.696953e+06 | 20964
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
SELECT * FROM pg_stats
WHERE tablename = 'zip_codes'
AND attname = 'place_name';
------------------+---------------------------------
schemaname | public
tablename | zip_codes
attname | place_name
... | ...
most_common_vals | {... , Manchester, ...}
most_common_freqs | {..., 0.0082665813, ...}
... | ...
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..42175.91 rows=14028 width=67)
(actual rows=13889 loops=1)
Filter: ((place_name)::text = 'Manchester'::text)
Rows Removed by Filter: 1683064
reltuples | 1.696953e+06
most_common_vals | {..., Manchester, ...}
most_common_freqs | {..., 0.0082665813, ...}
1.696953e+06 * 0.0082665813 = 14027.9999367789
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE community_name = 'Manchester';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..42175.91 rows=13858 width=67)
(actual rows=13912 loops=1)
Filter: ((community_name)::text = 'Manchester'::text)
Rows Removed by Filter: 1683041
reltuples | 1.696953e+06
most_common_vals | {..., Manchester, ...}
most_common_freqs | {..., 0.0081664017, ...}
1.696953e+06 * 0.0081664017 = 13857.9998640201
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester'
AND community_name = 'Manchester';
QUERY PLAN
----------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=115 width=67)
(actual rows=11744 loops=1)
Filter: (((place_name)::text = 'Manchester'::text) AND
((community_name)::text = 'Manchester'::text))
Rows Removed by Filter: 1685209
Underestimate
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
P (A & B) = P(A) * P(B)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
SELECT * FROM zip_codes
WHERE place_name = 'Manchester'
AND community_name = 'Manchester';
P(place_name = 'Manchester' & community_name = 'Manchester')
= P(place_name = 'Manchester') * P(community_name = 'Manchester')
= 0.0082665813 * 0.0081664017
= 0.00006750822358150821
0.00006750822358150821 * 1.696953e+06 = 114.558282531
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester'
AND community_name = 'Manchester';
QUERY PLAN
----------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=115 width=67)
(actual rows=11744 loops=1)
Filter: (((place_name)::text = 'Manchester'::text) AND
((community_name)::text = 'Manchester'::text))
Rows Removed by Filter: 1685209
Underestimate
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name != 'London'
AND community_name = 'Westminster';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=10896 width=67)
(actual rows=4 loops=1)
Filter: (((place_name)::text <> 'London'::text) AND
((community_name)::text = 'Westminster'::text))
Rows Removed by Filter: 1696949
Overestimate
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Correlated columns
●
Attribute Value Independence Assumption (AVIA)
– may result in wildly inaccurate estimates
– both underestimates and overestimates
●
consequences
– poor scan choices (Seq Scan vs. Index Scan)
– poor join choices (Nested Loop)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Index Scan using orders_city_idx on orders
(cost=0.28..185.10 rows=90 width=36)
(actual rows=12248237 loops=1)
Seq Scan using on orders
(cost=0.13..129385.10 rows=12248237 width=36)
(actual rows=90 loops=1)
Poor scan choices
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
-> Nested Loop (… rows=90 …) (… rows=12248237 …)
-> Index Scan using orders_city_idx on orders
(cost=0.28..185.10 rows=90 width=36)
(actual rows=12248237 loops=1)
...
-> Index Scan … (… loops=12248237)
Poor join choices
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
-> Nested Loop (… rows=90 …) (… rows=12248237 …)
-> Nested Loop (… rows=90 …) (… rows=12248237 …)
-> Nested Loop (… rows=90 …) (… rows=12248237 …)
-> Index Scan using orders_city_idx on orders
(cost=0.28..185.10 rows=90 width=36)
(actual rows=12248237 loops=1)
...
-> Index Scan … (… loops=12248237)
-> Index Scan … (… loops=12248237)
-> Index Scan … (… loops=12248237)
-> Index Scan … (… loops=12248237)
Poor join choices
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
functional dependencies
(WHERE)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Functional Dependencies
●
value in column A determines value in column B
●
trivial example: primary key determines everything
– zip code {place, state, county, community→ }
– M11 0AT {Manchester, England, Greater Manchester,→
Manchester District (B)}
●
other dependencies:
– zip code place state county community→ → → →
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
CREATE STATISTICS
CREATE STATISTICS s (dependencies)
ON place_name, community_name FROM zip_codes;
2 5
ANALYZE zip_codes;
SELECT stxdependencies FROM pg_statistic_ext WHERE stxname = 's';
dependencies
------------------------------------------
{"2 => 5": 0.697633, "5 => 2": 0.095800}
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
place → community: 0.697633 = d
P(place = 'Manchester' & community = 'Manchester') =
P(place = 'Manchester') * [d + (1-d) * P(community = 'Manchester')]
1.696953e+06 * 0.008266581 * (0.697633 + (1.0 - 0.697633) * 0.0081664017)
= 9281.03
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester'
AND county_name = 'Manchester';
QUERY PLAN
-----------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=9307 width=67)
(actual rows=11744 loops=1)
Filter: (((place_name)::text = 'Manchester'::text) AND
((community_name)::text = 'Manchester'::text))
Rows Removed by Filter: 1685209
Underestimate : fixed
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name != 'London'
AND community_name = 'Westminster';
QUERY PLAN
------------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=10896 width=67)
(actual rows=4 loops=1)
Filter: (((place_name)::text <> 'London'::text) AND
((community_name)::text = 'Westminster'::text))
Rows Removed by Filter: 1696949
Functional dependencies only work with equalities.
Overestimate #1: not fixed :-(
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT * FROM zip_codes WHERE place_name = 'Manchester'
AND county_name = 'Westminster';
QUERY PLAN
-----------------------------------------------------------------
Seq Scan on zip_codes (cost=0.00..46418.29 rows=9305 width=67)
(actual rows=0 loops=1)
Filter: (((place_name)::text = 'Manchester'::text) AND
((community_name)::text = 'Westminster'::text))
Rows Removed by Filter: 1696953
The queries need to “respect” the functional dependencies.
Overestimate #2: not fixed :-(
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
ndistinct
(GROUP BY)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT count(*) FROM zip_codes GROUP BY community_name;
QUERY PLAN
-------------------------------------------------------------------------
HashAggregate (cost=46418.29..46421.86 rows=358 width=29)
(actual rows=359 loops=1)
Group Key: community_name
-> Seq Scan on zip_codes (cost=0.00..37933.53 rows=1696953 width=21)
(actual rows=1696953 loops=1)
Planning Time: 0.087 ms
Execution Time: 337.718 ms
(5 rows)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
SELECT attname, n_distinct
FROM pg_stats WHERE tablename = 'zip_codes';
attname | n_distinct
----------------+------------
community_name | 358
county_name | 91
latitude | 59925
longitude | 64559
place_name | 12281
postal_code | -1
state_name | 3
(7 rows)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT count(*) FROM zip_codes GROUP BY community_name, place_name;
QUERY PLAN
----------------------------------------------------------------------------------
GroupAggregate (cost=294728.63..313395.11 rows=169695 width=40)
(actual rows=15194 loops=1)
Group Key: community_name, place_name
-> Sort (cost=294728.63..298971.01 rows=1696953 width=32)
(actual rows=1696953 loops=1)
Sort Key: community_name, place_name
Sort Method: external merge Disk: 69648kB
-> Seq Scan on zip_codes (cost=0.00..37933.53 rows=1696953 width=32)
(actual rows=1696953 loops=1)
Planning Time: 0.374 ms
Execution Time: 1554.933 ms
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT count(*) FROM zip_codes GROUP BY community_name, place_name;
QUERY PLAN
----------------------------------------------------------------------------------
GroupAggregate (cost=294728.63..313395.11 rows=169695 width=40)
(actual rows=15194 loops=1)
Group Key: community_name, place_name
-> Sort (cost=294728.63..298971.01 rows=1696953 width=32)
(actual rows=1696953 loops=1)
Sort Key: community_name, place_name
Sort Method: external merge Disk: 69648kB
-> Seq Scan on zip_codes (cost=0.00..37933.53 rows=1696953 width=32)
(actual rows=1696953 loops=1)
Planning Time: 0.374 ms
Execution Time: 1554.933 ms
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
ndistinct(community, place)
=
ndistinct(community) * ndistinct(place)
358 * 12281 = 4396598
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
ndistinct(community, place)
=
ndistinct(community) * ndistinct(place)
358 * 12281 = 4396598 (169695)
(capped to 10% of the table)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
CREATE STATISTICS s (ndistinct)
ON place_name, community_name, county_name
FROM zip_codes;
ANALYZE zip_codes;
SELECT stxndistinct FROM pg_statistic_ext WHERE stxname = 's';
n_distinct
---------------------------------------------------------------
{"2, 4": 12996, "2, 5": 13221, "4, 5": 399, "2, 4, 5": 13252}
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
EXPLAIN (ANALYZE, TIMING off)
SELECT count(*) FROM zip_codes GROUP BY community_name, postal_code;
QUERY PLAN
---------------------------------------------------------------------------
HashAggregate (cost=50660.68..50792.89 rows=13221 width=40)
(actual rows=15194 loops=1)
Group Key: community_name, place_name
-> Seq Scan on zip_codes (cost=0.00..37933.53 rows=1696953 width=32)
(actual rows=1696953 loops=1)
Planning Time: 0.056 ms
Execution Time: 436.828 ms
(5 rows)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
ndistinct
●
the “old behavior” was defensive
– unreliable estimates with multiple columns
– HashAggregate can’t spill to disk (OOM)
– rather than crash do Sort+GroupAggregate (slow)
●
ndistinct coefficients
– make multi-column ndistinct estimates more reliable
– reduced danger of OOM
– large tables + GROUP BY multiple columns
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Future Improvements
●
additional types of statistics
– MCV lists (PG12), histograms (??), …
●
statistics on expressions
– currently only simple column references
– alternative to functional indexes
●
improving join estimates
– using MCV lists
– special multi-table statistics (syntax already supports it)
https://github.com/tvondra/create-statistics-talk https://www.2ndQuadrant.com
PostgresLondon
London, July 2, 2019
Questions?
Tomas Vondra
tomas.vondra@2ndquadrant.com
tomas@pgaddict.com
@fuzzycz

More Related Content

Similar to CREATE STATISTICS - What is it for? (PostgresLondon)

Fast NoSQL from HDDs?
Fast NoSQL from HDDs? Fast NoSQL from HDDs?
Fast NoSQL from HDDs? ScyllaDB
 
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...DataStax Academy
 
Geospatial and bitemporal search in cassandra with pluggable lucene index
Geospatial and bitemporal search in cassandra with pluggable lucene indexGeospatial and bitemporal search in cassandra with pluggable lucene index
Geospatial and bitemporal search in cassandra with pluggable lucene indexAndrés de la Peña
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Igalia
 
Multidimensional DB design, revolving TPC-H benchmark into OLAP bench
Multidimensional DB design, revolving TPC-H benchmark into OLAP benchMultidimensional DB design, revolving TPC-H benchmark into OLAP bench
Multidimensional DB design, revolving TPC-H benchmark into OLAP benchRim Moussa
 
MongoDB Days UK: Using MongoDB and Python for Data Analysis Pipelines
MongoDB Days UK: Using MongoDB and Python for Data Analysis PipelinesMongoDB Days UK: Using MongoDB and Python for Data Analysis Pipelines
MongoDB Days UK: Using MongoDB and Python for Data Analysis PipelinesMongoDB
 
Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Jeremy Schneider
 
MongoDB World 2016: The Best IoT Analytics with MongoDB
MongoDB World 2016: The Best IoT Analytics with MongoDBMongoDB World 2016: The Best IoT Analytics with MongoDB
MongoDB World 2016: The Best IoT Analytics with MongoDBMongoDB
 
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...EDB
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++Andrey Karpov
 
4Developers 2018: Beyond c++17 (Mateusz Pusz)
4Developers 2018: Beyond c++17 (Mateusz Pusz)4Developers 2018: Beyond c++17 (Mateusz Pusz)
4Developers 2018: Beyond c++17 (Mateusz Pusz)PROIDEA
 
C PROGRAMS - SARASWATHI RAMALINGAM
C PROGRAMS - SARASWATHI RAMALINGAMC PROGRAMS - SARASWATHI RAMALINGAM
C PROGRAMS - SARASWATHI RAMALINGAMSaraswathiRamalingam
 
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco Slot
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco SlotDistributing Queries the Citus Way | PostgresConf US 2018 | Marco Slot
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco SlotCitus Data
 
Big Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStoreBig Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStoreMariaDB plc
 
A Deep Dive into Query Execution Engine of Spark SQL
A Deep Dive into Query Execution Engine of Spark SQLA Deep Dive into Query Execution Engine of Spark SQL
A Deep Dive into Query Execution Engine of Spark SQLDatabricks
 
Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer developmentAndrey Karpov
 
List intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and OptimizationsList intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and OptimizationsSunghwan Kim
 

Similar to CREATE STATISTICS - What is it for? (PostgresLondon) (20)

Fast NoSQL from HDDs?
Fast NoSQL from HDDs? Fast NoSQL from HDDs?
Fast NoSQL from HDDs?
 
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
Stratio: Geospatial and bitemporal search in Cassandra with pluggable Lucene ...
 
Geospatial and bitemporal search in cassandra with pluggable lucene index
Geospatial and bitemporal search in cassandra with pluggable lucene indexGeospatial and bitemporal search in cassandra with pluggable lucene index
Geospatial and bitemporal search in cassandra with pluggable lucene index
 
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
Community-driven Language Design at TC39 on the JavaScript Pipeline Operator ...
 
Multidimensional DB design, revolving TPC-H benchmark into OLAP bench
Multidimensional DB design, revolving TPC-H benchmark into OLAP benchMultidimensional DB design, revolving TPC-H benchmark into OLAP bench
Multidimensional DB design, revolving TPC-H benchmark into OLAP bench
 
MongoDB Days UK: Using MongoDB and Python for Data Analysis Pipelines
MongoDB Days UK: Using MongoDB and Python for Data Analysis PipelinesMongoDB Days UK: Using MongoDB and Python for Data Analysis Pipelines
MongoDB Days UK: Using MongoDB and Python for Data Analysis Pipelines
 
Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Wait! What’s going on inside my database?
Wait! What’s going on inside my database?
 
MongoDB World 2016: The Best IoT Analytics with MongoDB
MongoDB World 2016: The Best IoT Analytics with MongoDBMongoDB World 2016: The Best IoT Analytics with MongoDB
MongoDB World 2016: The Best IoT Analytics with MongoDB
 
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...
Understand the Query Plan to Optimize Performance with EXPLAIN and EXPLAIN AN...
 
The Great and Mighty C++
The Great and Mighty C++The Great and Mighty C++
The Great and Mighty C++
 
4Developers 2018: Beyond c++17 (Mateusz Pusz)
4Developers 2018: Beyond c++17 (Mateusz Pusz)4Developers 2018: Beyond c++17 (Mateusz Pusz)
4Developers 2018: Beyond c++17 (Mateusz Pusz)
 
C PROGRAMS - SARASWATHI RAMALINGAM
C PROGRAMS - SARASWATHI RAMALINGAMC PROGRAMS - SARASWATHI RAMALINGAM
C PROGRAMS - SARASWATHI RAMALINGAM
 
Learn to use Stratio Crossdata
Learn to use Stratio CrossdataLearn to use Stratio Crossdata
Learn to use Stratio Crossdata
 
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco Slot
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco SlotDistributing Queries the Citus Way | PostgresConf US 2018 | Marco Slot
Distributing Queries the Citus Way | PostgresConf US 2018 | Marco Slot
 
Big Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStoreBig Data Analytics with MariaDB ColumnStore
Big Data Analytics with MariaDB ColumnStore
 
A Deep Dive into Query Execution Engine of Spark SQL
A Deep Dive into Query Execution Engine of Spark SQLA Deep Dive into Query Execution Engine of Spark SQL
A Deep Dive into Query Execution Engine of Spark SQL
 
Story of static code analyzer development
Story of static code analyzer developmentStory of static code analyzer development
Story of static code analyzer development
 
ql.io at NodePDX
ql.io at NodePDXql.io at NodePDX
ql.io at NodePDX
 
The Cost Based Optimiser in 11gR2
The Cost Based Optimiser in 11gR2The Cost Based Optimiser in 11gR2
The Cost Based Optimiser in 11gR2
 
List intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and OptimizationsList intersection for web search: Algorithms, Cost Models, and Optimizations
List intersection for web search: Algorithms, Cost Models, and Optimizations
 

More from Tomas Vondra

PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6Tomas Vondra
 
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016Tomas Vondra
 
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAlt
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAltPostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAlt
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAltTomas Vondra
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSTomas Vondra
 
Performance improvements in PostgreSQL 9.5 and beyond
Performance improvements in PostgreSQL 9.5 and beyondPerformance improvements in PostgreSQL 9.5 and beyond
Performance improvements in PostgreSQL 9.5 and beyondTomas Vondra
 
Postgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSPostgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSTomas Vondra
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSTomas Vondra
 
Novinky v PostgreSQL 9.4 a JSONB
Novinky v PostgreSQL 9.4 a JSONBNovinky v PostgreSQL 9.4 a JSONB
Novinky v PostgreSQL 9.4 a JSONBTomas Vondra
 
PostgreSQL performance archaeology
PostgreSQL performance archaeologyPostgreSQL performance archaeology
PostgreSQL performance archaeologyTomas Vondra
 
Výkonnostní archeologie
Výkonnostní archeologieVýkonnostní archeologie
Výkonnostní archeologieTomas Vondra
 
Český fulltext a sdílené slovníky
Český fulltext a sdílené slovníkyČeský fulltext a sdílené slovníky
Český fulltext a sdílené slovníkyTomas Vondra
 
SSD vs HDD / WAL, indexes and fsync
SSD vs HDD / WAL, indexes and fsyncSSD vs HDD / WAL, indexes and fsync
SSD vs HDD / WAL, indexes and fsyncTomas Vondra
 
Checkpoint (CSPUG 22.11.2011)
Checkpoint (CSPUG 22.11.2011)Checkpoint (CSPUG 22.11.2011)
Checkpoint (CSPUG 22.11.2011)Tomas Vondra
 
Čtení explain planu (CSPUG 21.6.2011)
Čtení explain planu (CSPUG 21.6.2011)Čtení explain planu (CSPUG 21.6.2011)
Čtení explain planu (CSPUG 21.6.2011)Tomas Vondra
 
Replikace (CSPUG 19.4.2011)
Replikace (CSPUG 19.4.2011)Replikace (CSPUG 19.4.2011)
Replikace (CSPUG 19.4.2011)Tomas Vondra
 
PostgreSQL / Performance monitoring
PostgreSQL / Performance monitoringPostgreSQL / Performance monitoring
PostgreSQL / Performance monitoringTomas Vondra
 

More from Tomas Vondra (18)

Data corruption
Data corruptionData corruption
Data corruption
 
DB vs. encryption
DB vs. encryptionDB vs. encryption
DB vs. encryption
 
PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6PostgreSQL performance improvements in 9.5 and 9.6
PostgreSQL performance improvements in 9.5 and 9.6
 
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
 
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAlt
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAltPostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAlt
PostgreSQL na EXT4, XFS, BTRFS a ZFS / OpenAlt
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFS
 
Performance improvements in PostgreSQL 9.5 and beyond
Performance improvements in PostgreSQL 9.5 and beyondPerformance improvements in PostgreSQL 9.5 and beyond
Performance improvements in PostgreSQL 9.5 and beyond
 
Postgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFSPostgresql na EXT3/4, XFS, BTRFS a ZFS
Postgresql na EXT3/4, XFS, BTRFS a ZFS
 
PostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFSPostgreSQL on EXT4, XFS, BTRFS and ZFS
PostgreSQL on EXT4, XFS, BTRFS and ZFS
 
Novinky v PostgreSQL 9.4 a JSONB
Novinky v PostgreSQL 9.4 a JSONBNovinky v PostgreSQL 9.4 a JSONB
Novinky v PostgreSQL 9.4 a JSONB
 
PostgreSQL performance archaeology
PostgreSQL performance archaeologyPostgreSQL performance archaeology
PostgreSQL performance archaeology
 
Výkonnostní archeologie
Výkonnostní archeologieVýkonnostní archeologie
Výkonnostní archeologie
 
Český fulltext a sdílené slovníky
Český fulltext a sdílené slovníkyČeský fulltext a sdílené slovníky
Český fulltext a sdílené slovníky
 
SSD vs HDD / WAL, indexes and fsync
SSD vs HDD / WAL, indexes and fsyncSSD vs HDD / WAL, indexes and fsync
SSD vs HDD / WAL, indexes and fsync
 
Checkpoint (CSPUG 22.11.2011)
Checkpoint (CSPUG 22.11.2011)Checkpoint (CSPUG 22.11.2011)
Checkpoint (CSPUG 22.11.2011)
 
Čtení explain planu (CSPUG 21.6.2011)
Čtení explain planu (CSPUG 21.6.2011)Čtení explain planu (CSPUG 21.6.2011)
Čtení explain planu (CSPUG 21.6.2011)
 
Replikace (CSPUG 19.4.2011)
Replikace (CSPUG 19.4.2011)Replikace (CSPUG 19.4.2011)
Replikace (CSPUG 19.4.2011)
 
PostgreSQL / Performance monitoring
PostgreSQL / Performance monitoringPostgreSQL / Performance monitoring
PostgreSQL / Performance monitoring
 

Recently uploaded

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 

Recently uploaded (20)

Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 

CREATE STATISTICS - What is it for? (PostgresLondon)