SlideShare a Scribd company logo
Storage Methods

for

Nonstandard Data Patterns
BOB BURGESS
DATABAS E OPERATIONS ENGINEER
2
Agenda
Intro
Choices Available To You
Choices I Tested
Testing Methods
What I Saw When Loading Data
What I Saw When Using Data
Storage Engine Comparison
Conclusions
3
WHO IS THI S GUY?
4
• Bob Burgess
• Developer, then DBA
• 1997, Oracle & Sybase
• 2007, MySQL at Radian6 => Salesforce
• 2015, MySQL at Shopify
• bob.burgess@shopify.com
• 2006
• Platform to let merchants easily sell online and in person
• 243,000+ Active stores / $14B in sales / 150 Countries
• Large MySQL Installation
• Hiring!
5
6
Don’t Panic
• All slides will be posted to the conference site & Slideshare
• Test scripts and test data will be posted to Github “bobburgess”
• bob.burgess@shopify.com
7
Why Am I Doing This?
• I can’t be the only one
• Surprising results
8
CHOICES
9
“Normal” Tables
• A few numbers and “average-size” varchar columns
• Couple of indexes
• Artificial or random primary key
10
Unusual Tables
• Very tiny rows
• Very large rows
• Large random primary key
Unusual Tables
• Very tiny rows
• Very large rows
• Large random primary key
11
• Multiple TB
• Two bigints
• Generally-increasing primary key
• InnoDB
Unusual Tables
• Very tiny rows
• Very large rows
• Large random primary key
12
• De-duplication
• SHA1 hash
• binary(20)
• Completely random primary key
• InnoDB
Unusual Tables• Very tiny rows
• Very large rows
• Large random primary key
13
• De-duplication
• SHA1 hash
• binary(20)
• Completely random primary key
• InnoDB
• Yves Trudeau (Percona)
• Auto-increment PK
• Index on 1st 5 bytes of binary(20) hash
• Trigger to check for Duplicates
14
Storage Engines
MySQL
client
disk
15
Storage Engines
MySQL
client
disk
MySQL
client
disk
Storage
Engine
16
Storage Engines
MySQL
client
disk
MySQL
client
disk
Storage
Engine
17
Storage Engines
MySQL
client
disk
MySQL
client
disk
Storage
Engine
18
Choices
• Storage: Solid-state vs. Spinning Rust
• Arrays of Storage (RAID levels)
• Storage Engine…
• suitability for data shape
• suitability for access patterns
• adaptability to slower storage
19
MY TESTS
CHOICES TESTED (VARI ABLES)
20
Primary Key
• Auto-Increment (Sequential) Integer
• Random Integer
• Random Large (20 bytes)
• Auto-Increment (Sequential) Integer With Trigger
21
Data Shape
22
Data Shape: Tiny Rows
create table tinyrows (
id bigint primary key,
payload bigint);
23
Data Shape: Tiny Rows
create table tinyrows (
id bigint auto_increment primary key,
payload bigint);
24
Data Shape: Tiny Rows
create table tinyrows (
id bigint auto_increment primary key,
payload bigint,
index i (payload));
25
Data Shape: “Average” Rows
create table averagerows (
id bigint primary key,
num0 bigint,
char1 varchar(60),
num1 decimal (10,2),
num2 double,
char2 varchar(60),
char3 varchar(50));
26
Data Shape: “Average” Rows
create table averagerows (
id bigint auto_increment primary key,
num0 bigint,
char1 varchar(60),
num1 decimal (10,2),
num2 double,
char2 varchar(60),
char3 varchar(50));
27
Data Shape: “Average” Rows
create table averagerows (
id bigint auto_increment primary key,
num0 bigint,
char1 varchar(60),
num1 decimal (10,2),
num2 double,
char2 varchar(60),
char3 varchar(50),
index i1 (num0),
index i2 (char1),
index i3 (char3),
index i4 (num2));
28
Data Shape: “Average” Rows
create table averagerows (
id binary(20) primary key,
num0 bigint,
char1 varchar(60),
num1 decimal (10,2),
num2 double,
char2 varchar(60),
char3 varchar(50),
index i1 (num0),
index i2 (char1),
index i3 (char3),
index i4 (num2));
29
Data Shape: “Average” Rows
create table averagerows (
newid bigint auto_increment primary key,
real_id binary(20),
num0 bigint,
char1 varchar(60),
num1 decimal (10,2),
num2 double,
char2 varchar(60),
char3 varchar(50),
index id_helper (real_id(6)),
index i1 (num0),
index i2 (char1),
index i3 (char3),
index i4 (num2));
30
Data Shape: “Average” Rows
create trigger averagerows_bi
before insert on averagerows
for each row
begin
select count(*) into @c from averagerows where real_id = new.real_id;
if @c != 0 then
set @m=concat('Duplicate entry ''',hex(new.real_id),''' for key ''PRIMARY''');
signal SQLSTATE '23000' set message_text=@m, mysql_errno=1062;
end if;
end;
31
Data Shape: “Average” Rows
create trigger averagerows_bi
before insert on averagerows
for each row
begin
select count(*) into @c from averagerows where real_id = new.real_id;
if @c != 0 then
set @m=concat('Duplicate entry ''',hex(new.real_id),''' for key ''PRIMARY''');
signal SQLSTATE '23000' set message_text=@m, mysql_errno=1062;
end if;
end;
Do we have this one already?
YES
Raise an error
32
Data Shape: Large Rows
create table largerows_ai (
id bigint primary key,
payload1 varchar(2000),
payload2 varchar(2000),
payload3 varchar(2000),
payload4 varchar(2000));
33
Data Shape: Large Rows
create table largerows_ai (
id bigint auto_increment primary key,
payload1 varchar(2000),
payload2 varchar(2000),
payload3 varchar(2000),
payload4 varchar(2000));
34
Data Shape: Large Rows
create table largerows_ai (
id bigint auto_increment primary key,
payload1 varchar(2000),
payload2 varchar(2000),
payload3 varchar(2000),
payload4 varchar(2000),
index i1 (payload1(40)),
index i2 (payload2(767));
35
Storage Engines
36
Storage Engine: InnoDB
• Very Mature
• Well understood
• Continually updated
• Supported by Galera Cluster
37
Storage Engine: TokuDB
• Was separately-licensed; bought by Percona last year
• Built into Percona Server now
• Extreme data compression
• Online table alters
• Other benefits
• Not supported by Galera Cluster
38
Storage Engine: Deep
• Separately-licensed product
• Distributed as a complete package, based on 5.6
• Does data compression
• Self-tuning using constant data analysis
• Other benefits
• Not supported by Galera Cluster
39
Filesystem
• ext4, xfs, others
• Journaling uses IO and can be disabled
40
TESTING ME THODS
41
Hardware
Load Generator Database
1 Gbe
Dell 2950-III
32 GB RAM
Two 4-core 3GHz Xeon processors
SSD and HDD storage
Ubuntu 14.04
Measured SSD IOPS (fio: random RW / 5G file):
9750 read, 3254 write
Desktop
8 GB RAM
Intel i7 processor
SSD storage
Ubuntu 14.04
42
Software
Load Generator Database
Ubuntu 14.04
Percona Server 5.6.28
deepSQL 5.6.28-21214
Ubuntu 14.04
go v.1.2.1
43
Data Loading
• in go for speed
• Loop until stopped:
• Fill buffer with 1000 (or 10000) rows
• Send buffer to LOAD DATA INFILE
• Very low CPU and network on load-gen box
• Concurrency of 1 and 20
• github.com/bobburgess
44
Data Usage (Work that DB)
• in go for speed
• Loop until stopped:
• Select by PK
• Select by each secondary index 

(column starts with random value)
• Insert a row of random data
• Very low CPU and network on load-gen box
• Concurrency of 20, 60, and 100
• github.com/bobburgess
45
DB Server Measurements
• in bash ’cause I’m lazy (and speed not required)
• Loop until stopped:
• Take measurements
• Output measurements
• Remember old values (for differential measurements)
• sleep for 1 sec minus the time taken for the measurements
• Very lightweight
• github.com/bobburgess
46
DB Server Measurements
• Rows per second inserted & selected
• Disk IOs per second, read & write
• Bytes per second, read & write
• Size of mysqld process
• Size of data on disk
• CPU %, User-time & System-time
47
DB Server Measurements
• Rows per second inserted & selected
• Disk IOs per second, read & write
• Bytes per second, read & write
• Size of mysqld process
• Size of data on disk
• CPU %, User-time & System-time
Measure of throughput
Possible to use slower storage?
Possible to use slower storage?
Wasteful of memory? Bloated?
Possible to use less storage?
Lower = can handle more load
48
Testing Flow
• Start DB monitor on DB server (output to file)
• Start up required processes on load-gen box
• Check DB server for unexpected activity
• Check load-gen box for unexpected activity
• Check load-gen box for CPU or network bottlenecks
• Stop test processes when data set large enough
49
Plotting the Data
• R
• Define columns
columns <- c(“Seconds”, “rowInsPerSec", “rowSelPerSec", “IOPSR", “IOPSW", “BpSR",
“BpSW", "ProcSizekB", “FilesizeB", “UserTime", "SystemTime")
• Read In Data
tr_ai_ni_load_1ses_ssd_inno <- read.csv("~/test/innodb/tinyrows_ai_ldi.1.csv",
header=FALSE, col.names=columns, stringsAsFactors=FALSE)
• github.com/bobburgess
50
Plotting the Data
• Example: Two plots with running-average lines
par(mar=c(5, 9, 4, 6) + 0.1)
options(scipen=15)
Xmin=1
Xmax=14432
Ymin=0
Ymax=120
smooth=100
# First
plot(seq(Xmax), avg_ai_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], col="red", pch=".", xlab="", ylab="", ylim=c(Ymin,Ymax),
type="p", axes=FALSE, main="")
axis(2,ylim=c(Ymin,Ymax), col="red", las=1)
mtext("IOPS - Write", side=2, line=3)
box()
lines(seq(Xmax), filter(avg_ai_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], rep(1/(smooth+1),(smooth+1)), sides=2), col="red",
lwd=2)
par(new=TRUE)
# Second
plot(seq(Xmax), avg_rnd_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], col="blue", pch=".", xlab="", ylab="",
ylim=c(Ymin,Ymax), type="p", axes=FALSE)
lines(seq(Xmax), filter(avg_rnd_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], rep(1/(smooth+1),(smooth+1)), sides=2),
col="blue", lwd=2)
# Finish up
axis(1,at=seq(0,Xmax,60),labels=seq(0,Xmax/60))
mtext("Minutes", side=1, col="black", line=2)
legend("topright",c("Auto-Inc PK","Random PK"),fill=c("red","blue"))
51
RESU LTS
InnoDB
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
56
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
57
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
58
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
59
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
60
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
61
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
62
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
200,000
63
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
64
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
65
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
66
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
67
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
68
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
69
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
70
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
71
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
72
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
73
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
82
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
83
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
84
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
85
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
?!
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
…
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
93
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
94
95
InnoDB…
Bulk-Load
Single-Session 1 

Multi-Session 0
Primary Key


Auto-Inc 1

Random 1

Large 0
TokuDB
96
97
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
98
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
99
100
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
101
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
102
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
103
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
40-60
104
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
105
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
106
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
107
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
108
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
109
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
110
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Difference with InnoDB is not as great
111
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
112
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
113
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
114
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
115
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
116
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
117
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
118
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
119
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
120
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
121
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
122
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
123
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
124
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
125
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
126
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
127
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
128
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
129
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
130
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
131
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
132
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
133
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
134
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
135
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
136
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
137
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
138
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
139
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Same shape as PK-Only, 1 Session
146
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
147
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
148
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
deepSQL
153
154
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
InnoDB
TokuDB
157
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
158
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
161
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
162
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
163
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
164
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
165
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
166
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
167
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
168
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
171
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
172
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
173
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
174
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
175
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
176
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
177
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
178
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
179
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
180
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
181
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
182
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
183
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
184
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
185
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
186
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
InnoDB
TokuDB
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
194
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
195
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
196
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
197
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
198
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
199
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
200
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
201
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
202
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
203
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
204
Storage Engine Row Size________ Primary Key_________ Indexing Sessions

InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20

Deep Random Random Lrg Multiple
205
Usage Performance
206
Usage Performance
• Each row size
• Auto-Increment PK
• Inserted by multiple threads
• disk files of 2X or 3X cache size
207
Usage Performance
• Loop this block:
• Several selects
• One Insert
• 20, 60, 100, 200 concurrent
• Count Com_insert and Com_select on server side
208
Usage Performance
“Average” Rows InnoDB TokuDB Deep
Rows 3,264,053 6,742,470 5,324,183
Avg. Row Length 366 174 180
~2 GB on disk
209
Tiny Rows (Select)
20 sessions 60 sessions 100 sessions 200 sessions
210
Tiny Rows (Insert)
211
Average Rows (Select)
212
Average Rows (Insert)
213
Large Rows (Select)
214
Large Rows (Insert)
215
NO MORE CHARTS!
216
What I Learned
• Vast differences depending on use-case
• Some patterns not as bad as first thought (i.e. Random PK)
• Some patterns worse than first thought (i.e. with bytes/row)
217
Take-Aways
• Test for your use-case
• Don’t assume you already know how the DB will respond
• Don’t trust anyone, especially me. Test it yourself!
218
THANK YOU !
SLI DES WI LL BE ONLINE
BOB.BURGESS @SH OPIFY.COM 

GITHUB.COM/BOBBU RGESS



PLEASE F ILL O UT AN EVALUATION!
is hiring!
Ad

More Related Content

What's hot (20)

Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
Sveta Smirnova
 
Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my! Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my!
Dave Stokes
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
Sveta Smirnova
 
Discover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQLDiscover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQL
Dave Stokes
 
Json within a relational database
Json within a relational databaseJson within a relational database
Json within a relational database
Dave Stokes
 
Managing a 14 TB reporting datawarehouse with postgresql
Managing a 14 TB reporting datawarehouse with postgresql Managing a 14 TB reporting datawarehouse with postgresql
Managing a 14 TB reporting datawarehouse with postgresql
Soumya Ranjan Subudhi
 
Developing and Deploying Apps with the Postgres FDW
Developing and Deploying Apps with the Postgres FDWDeveloping and Deploying Apps with the Postgres FDW
Developing and Deploying Apps with the Postgres FDW
Jonathan Katz
 
2014 05-07-fr - add dev series - session 6 - deploying your application-2
2014 05-07-fr - add dev series - session 6 - deploying your application-22014 05-07-fr - add dev series - session 6 - deploying your application-2
2014 05-07-fr - add dev series - session 6 - deploying your application-2
MongoDB
 
MySQL Performance Tuning at COSCUP 2014
MySQL Performance Tuning at COSCUP 2014MySQL Performance Tuning at COSCUP 2014
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation Performance
MongoDB
 
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
DataStax
 
MySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics ImprovementsMySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics Improvements
Morgan Tocker
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into Cassandra
DataStax
 
MySQL 5.7 + JSON
MySQL 5.7 + JSONMySQL 5.7 + JSON
MySQL 5.7 + JSON
Morgan Tocker
 
High Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal CloudHigh Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal Cloud
MongoDB
 
OSDC 2012 | Scaling with MongoDB by Ross Lawley
OSDC 2012 | Scaling with MongoDB by Ross LawleyOSDC 2012 | Scaling with MongoDB by Ross Lawley
OSDC 2012 | Scaling with MongoDB by Ross Lawley
NETWAYS
 
Hbase an introduction
Hbase an introductionHbase an introduction
Hbase an introduction
Fabio Fumarola
 
cPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturescPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven Features
Dave Stokes
 
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dave Stokes
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...Modern solutions for modern database load: improvements in the latest MariaDB...
Modern solutions for modern database load: improvements in the latest MariaDB...
Sveta Smirnova
 
Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my! Datacon LA - MySQL without the SQL - Oh my!
Datacon LA - MySQL without the SQL - Oh my!
Dave Stokes
 
Using Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data AnalysisUsing Apache Spark and MySQL for Data Analysis
Using Apache Spark and MySQL for Data Analysis
Sveta Smirnova
 
Discover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQLDiscover the Power of the NoSQL + SQL with MySQL
Discover the Power of the NoSQL + SQL with MySQL
Dave Stokes
 
Json within a relational database
Json within a relational databaseJson within a relational database
Json within a relational database
Dave Stokes
 
Managing a 14 TB reporting datawarehouse with postgresql
Managing a 14 TB reporting datawarehouse with postgresql Managing a 14 TB reporting datawarehouse with postgresql
Managing a 14 TB reporting datawarehouse with postgresql
Soumya Ranjan Subudhi
 
Developing and Deploying Apps with the Postgres FDW
Developing and Deploying Apps with the Postgres FDWDeveloping and Deploying Apps with the Postgres FDW
Developing and Deploying Apps with the Postgres FDW
Jonathan Katz
 
2014 05-07-fr - add dev series - session 6 - deploying your application-2
2014 05-07-fr - add dev series - session 6 - deploying your application-22014 05-07-fr - add dev series - session 6 - deploying your application-2
2014 05-07-fr - add dev series - session 6 - deploying your application-2
MongoDB
 
MySQL Performance Tuning at COSCUP 2014
MySQL Performance Tuning at COSCUP 2014MySQL Performance Tuning at COSCUP 2014
MySQL Performance Tuning at COSCUP 2014
Ryusuke Kajiyama
 
MongoDB Aggregation Performance
MongoDB Aggregation PerformanceMongoDB Aggregation Performance
MongoDB Aggregation Performance
MongoDB
 
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
DataStax
 
MySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics ImprovementsMySQL 5.6 - Operations and Diagnostics Improvements
MySQL 5.6 - Operations and Diagnostics Improvements
Morgan Tocker
 
Bulk Loading Data into Cassandra
Bulk Loading Data into CassandraBulk Loading Data into Cassandra
Bulk Loading Data into Cassandra
DataStax
 
High Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal CloudHigh Performance, Scalable MongoDB in a Bare Metal Cloud
High Performance, Scalable MongoDB in a Bare Metal Cloud
MongoDB
 
OSDC 2012 | Scaling with MongoDB by Ross Lawley
OSDC 2012 | Scaling with MongoDB by Ross LawleyOSDC 2012 | Scaling with MongoDB by Ross Lawley
OSDC 2012 | Scaling with MongoDB by Ross Lawley
NETWAYS
 
cPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven FeaturescPanel now supports MySQL 8.0 - My Top Seven Features
cPanel now supports MySQL 8.0 - My Top Seven Features
Dave Stokes
 
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and HistogramsDutch PHP Conference 2021 - MySQL Indexes and Histograms
Dutch PHP Conference 2021 - MySQL Indexes and Histograms
Dave Stokes
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
Morgan Tocker
 

Viewers also liked (6)

Visualizing Data in Elasticsearch DevFest DC 2016
Visualizing Data in Elasticsearch DevFest DC 2016Visualizing Data in Elasticsearch DevFest DC 2016
Visualizing Data in Elasticsearch DevFest DC 2016
David Erickson
 
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
YUCHENG HU
 
TokuDB - What You Need to Know
TokuDB - What You Need to KnowTokuDB - What You Need to Know
TokuDB - What You Need to Know
Jervin Real
 
MySQL Tokudb engine benchmark
MySQL Tokudb engine benchmarkMySQL Tokudb engine benchmark
MySQL Tokudb engine benchmark
Louis liu
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
FromDual GmbH
 
MySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB StatusMySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB Status
Karwin Software Solutions LLC
 
Visualizing Data in Elasticsearch DevFest DC 2016
Visualizing Data in Elasticsearch DevFest DC 2016Visualizing Data in Elasticsearch DevFest DC 2016
Visualizing Data in Elasticsearch DevFest DC 2016
David Erickson
 
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
TokuDB 高科扩展性 MySQL 和 MariaDB 数据库
YUCHENG HU
 
TokuDB - What You Need to Know
TokuDB - What You Need to KnowTokuDB - What You Need to Know
TokuDB - What You Need to Know
Jervin Real
 
MySQL Tokudb engine benchmark
MySQL Tokudb engine benchmarkMySQL Tokudb engine benchmark
MySQL Tokudb engine benchmark
Louis liu
 
MySQL Performance Tuning Variables
MySQL Performance Tuning VariablesMySQL Performance Tuning Variables
MySQL Performance Tuning Variables
FromDual GmbH
 
Ad

Similar to Storage Methods for Nonstandard Data Patterns (20)

7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 20197 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
Dave Stokes
 
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Dave Stokes
 
Webinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationWebinar: Index Tuning and Evaluation
Webinar: Index Tuning and Evaluation
MongoDB
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
Reuven Lerner
 
Machine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy CrossMachine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy Cross
Andrew Flatters
 
Performance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Performance Scenario: Diagnosing and resolving sudden slow down on two node RACPerformance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Performance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Kristofferson A
 
Data Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQLData Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQL
Basho Technologies
 
Star schema my sql
Star schema   my sqlStar schema   my sql
Star schema my sql
deathsubte
 
Rapid Development of Data Generators Using Meta Generators in PDGF
Rapid Development of Data Generators Using Meta Generators in PDGFRapid Development of Data Generators Using Meta Generators in PDGF
Rapid Development of Data Generators Using Meta Generators in PDGF
Tilmann Rabl
 
4 docker small_web_micro_services
4 docker small_web_micro_services4 docker small_web_micro_services
4 docker small_web_micro_services
FEG
 
MySQL Performance Monitoring
MySQL Performance MonitoringMySQL Performance Monitoring
MySQL Performance Monitoring
spil-engineering
 
Presentation day4 oracle12c
Presentation day4 oracle12cPresentation day4 oracle12c
Presentation day4 oracle12c
Pradeep Srivastava
 
Retaining globally distributed high availability
Retaining globally distributed high availabilityRetaining globally distributed high availability
Retaining globally distributed high availability
spil-engineering
 
Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']
Jan Helke
 
SharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi VončinaSharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi Vončina
SPC Adriatics
 
Challenges of Implementing an Advanced SQL Engine on Hadoop
Challenges of Implementing an Advanced SQL Engine on HadoopChallenges of Implementing an Advanced SQL Engine on Hadoop
Challenges of Implementing an Advanced SQL Engine on Hadoop
DataWorks Summit
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
Malin Weiss
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
Speedment, Inc.
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Altinity Ltd
 
Data Warehouse Logical Design using Mysql
Data Warehouse Logical Design using MysqlData Warehouse Logical Design using Mysql
Data Warehouse Logical Design using Mysql
HAFIZ Islam
 
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 20197 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
7 Database Mistakes YOU Are Making -- Linuxfest Northwest 2019
Dave Stokes
 
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Dave Stokes
 
Webinar: Index Tuning and Evaluation
Webinar: Index Tuning and EvaluationWebinar: Index Tuning and Evaluation
Webinar: Index Tuning and Evaluation
MongoDB
 
Machine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy CrossMachine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy Cross
Andrew Flatters
 
Performance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Performance Scenario: Diagnosing and resolving sudden slow down on two node RACPerformance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Performance Scenario: Diagnosing and resolving sudden slow down on two node RAC
Kristofferson A
 
Data Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQLData Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQL
Basho Technologies
 
Star schema my sql
Star schema   my sqlStar schema   my sql
Star schema my sql
deathsubte
 
Rapid Development of Data Generators Using Meta Generators in PDGF
Rapid Development of Data Generators Using Meta Generators in PDGFRapid Development of Data Generators Using Meta Generators in PDGF
Rapid Development of Data Generators Using Meta Generators in PDGF
Tilmann Rabl
 
4 docker small_web_micro_services
4 docker small_web_micro_services4 docker small_web_micro_services
4 docker small_web_micro_services
FEG
 
MySQL Performance Monitoring
MySQL Performance MonitoringMySQL Performance Monitoring
MySQL Performance Monitoring
spil-engineering
 
Retaining globally distributed high availability
Retaining globally distributed high availabilityRetaining globally distributed high availability
Retaining globally distributed high availability
spil-engineering
 
Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']Bye bye $GLOBALS['TYPO3_DB']
Bye bye $GLOBALS['TYPO3_DB']
Jan Helke
 
SharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi VončinaSharePoint 2013 Performance Analysis - Robi Vončina
SharePoint 2013 Performance Analysis - Robi Vončina
SPC Adriatics
 
Challenges of Implementing an Advanced SQL Engine on Hadoop
Challenges of Implementing an Advanced SQL Engine on HadoopChallenges of Implementing an Advanced SQL Engine on Hadoop
Challenges of Implementing an Advanced SQL Engine on Hadoop
DataWorks Summit
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
Malin Weiss
 
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
JavaOne2016 - Microservices: Terabytes in Microseconds [CON4516]
Speedment, Inc.
 
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander ZaitsevMigration to ClickHouse. Practical guide, by Alexander Zaitsev
Migration to ClickHouse. Practical guide, by Alexander Zaitsev
Altinity Ltd
 
Data Warehouse Logical Design using Mysql
Data Warehouse Logical Design using MysqlData Warehouse Logical Design using Mysql
Data Warehouse Logical Design using Mysql
HAFIZ Islam
 
Ad

Recently uploaded (20)

Automated Melanoma Detection via Image Processing.pptx
Automated Melanoma Detection via Image Processing.pptxAutomated Melanoma Detection via Image Processing.pptx
Automated Melanoma Detection via Image Processing.pptx
handrymaharjan23
 
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
Taqyea
 
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
Taqyea
 
Process Mining at Deutsche Bank - Journey
Process Mining at Deutsche Bank - JourneyProcess Mining at Deutsche Bank - Journey
Process Mining at Deutsche Bank - Journey
Process mining Evangelist
 
problem solving.presentation slideshow bsc nursing
problem solving.presentation slideshow bsc nursingproblem solving.presentation slideshow bsc nursing
problem solving.presentation slideshow bsc nursing
vishnudathas123
 
Adopting Process Mining at the Rabobank - use case
Adopting Process Mining at the Rabobank - use caseAdopting Process Mining at the Rabobank - use case
Adopting Process Mining at the Rabobank - use case
Process mining Evangelist
 
report (maam dona subject).pptxhsgwiswhs
report (maam dona subject).pptxhsgwiswhsreport (maam dona subject).pptxhsgwiswhs
report (maam dona subject).pptxhsgwiswhs
AngelPinedaTaguinod
 
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdfTOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
NhiV747372
 
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
bastakwyry
 
Agricultural_regionalisation_in_India(Final).pptx
Agricultural_regionalisation_in_India(Final).pptxAgricultural_regionalisation_in_India(Final).pptx
Agricultural_regionalisation_in_India(Final).pptx
mostafaahammed38
 
What is ETL? Difference between ETL and ELT?.pdf
What is ETL? Difference between ETL and ELT?.pdfWhat is ETL? Difference between ETL and ELT?.pdf
What is ETL? Difference between ETL and ELT?.pdf
SaikatBasu37
 
AI ------------------------------ W1L2.pptx
AI ------------------------------ W1L2.pptxAI ------------------------------ W1L2.pptx
AI ------------------------------ W1L2.pptx
AyeshaJalil6
 
Improving Product Manufacturing Processes
Improving Product Manufacturing ProcessesImproving Product Manufacturing Processes
Improving Product Manufacturing Processes
Process mining Evangelist
 
HershAggregator (2).pdf musicretaildistribution
HershAggregator (2).pdf musicretaildistributionHershAggregator (2).pdf musicretaildistribution
HershAggregator (2).pdf musicretaildistribution
hershtara1
 
Mining a Global Trade Process with Data Science - Microsoft
Mining a Global Trade Process with Data Science - MicrosoftMining a Global Trade Process with Data Science - Microsoft
Mining a Global Trade Process with Data Science - Microsoft
Process mining Evangelist
 
Automation Platforms and Process Mining - success story
Automation Platforms and Process Mining - success storyAutomation Platforms and Process Mining - success story
Automation Platforms and Process Mining - success story
Process mining Evangelist
 
50_questions_full.pptxdddddddddddddddddd
50_questions_full.pptxdddddddddddddddddd50_questions_full.pptxdddddddddddddddddd
50_questions_full.pptxdddddddddddddddddd
emir73065
 
AWS RDS Presentation to make concepts easy.pptx
AWS RDS Presentation to make concepts easy.pptxAWS RDS Presentation to make concepts easy.pptx
AWS RDS Presentation to make concepts easy.pptx
bharatkumarbhojwani
 
Dynamics 365 Business Rules Dynamics Dynamics
Dynamics 365 Business Rules Dynamics DynamicsDynamics 365 Business Rules Dynamics Dynamics
Dynamics 365 Business Rules Dynamics Dynamics
heyoubro69
 
Analysis of Billboards hot 100 toop five hit makers on the chart.docx
Analysis of Billboards hot 100 toop five hit makers on the chart.docxAnalysis of Billboards hot 100 toop five hit makers on the chart.docx
Analysis of Billboards hot 100 toop five hit makers on the chart.docx
hershtara1
 
Automated Melanoma Detection via Image Processing.pptx
Automated Melanoma Detection via Image Processing.pptxAutomated Melanoma Detection via Image Processing.pptx
Automated Melanoma Detection via Image Processing.pptx
handrymaharjan23
 
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
录取通知书加拿大TMU毕业证多伦多都会大学电子版毕业证成绩单
Taqyea
 
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
文凭证书美国SDSU文凭圣地亚哥州立大学学生证学历认证查询
Taqyea
 
problem solving.presentation slideshow bsc nursing
problem solving.presentation slideshow bsc nursingproblem solving.presentation slideshow bsc nursing
problem solving.presentation slideshow bsc nursing
vishnudathas123
 
Adopting Process Mining at the Rabobank - use case
Adopting Process Mining at the Rabobank - use caseAdopting Process Mining at the Rabobank - use case
Adopting Process Mining at the Rabobank - use case
Process mining Evangelist
 
report (maam dona subject).pptxhsgwiswhs
report (maam dona subject).pptxhsgwiswhsreport (maam dona subject).pptxhsgwiswhs
report (maam dona subject).pptxhsgwiswhs
AngelPinedaTaguinod
 
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdfTOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
TOAE201-Slides-Chapter 4. Sample theoretical basis (1).pdf
NhiV747372
 
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
2-Raction quotient_١٠٠١٤٦.ppt of physical chemisstry
bastakwyry
 
Agricultural_regionalisation_in_India(Final).pptx
Agricultural_regionalisation_in_India(Final).pptxAgricultural_regionalisation_in_India(Final).pptx
Agricultural_regionalisation_in_India(Final).pptx
mostafaahammed38
 
What is ETL? Difference between ETL and ELT?.pdf
What is ETL? Difference between ETL and ELT?.pdfWhat is ETL? Difference between ETL and ELT?.pdf
What is ETL? Difference between ETL and ELT?.pdf
SaikatBasu37
 
AI ------------------------------ W1L2.pptx
AI ------------------------------ W1L2.pptxAI ------------------------------ W1L2.pptx
AI ------------------------------ W1L2.pptx
AyeshaJalil6
 
HershAggregator (2).pdf musicretaildistribution
HershAggregator (2).pdf musicretaildistributionHershAggregator (2).pdf musicretaildistribution
HershAggregator (2).pdf musicretaildistribution
hershtara1
 
Mining a Global Trade Process with Data Science - Microsoft
Mining a Global Trade Process with Data Science - MicrosoftMining a Global Trade Process with Data Science - Microsoft
Mining a Global Trade Process with Data Science - Microsoft
Process mining Evangelist
 
Automation Platforms and Process Mining - success story
Automation Platforms and Process Mining - success storyAutomation Platforms and Process Mining - success story
Automation Platforms and Process Mining - success story
Process mining Evangelist
 
50_questions_full.pptxdddddddddddddddddd
50_questions_full.pptxdddddddddddddddddd50_questions_full.pptxdddddddddddddddddd
50_questions_full.pptxdddddddddddddddddd
emir73065
 
AWS RDS Presentation to make concepts easy.pptx
AWS RDS Presentation to make concepts easy.pptxAWS RDS Presentation to make concepts easy.pptx
AWS RDS Presentation to make concepts easy.pptx
bharatkumarbhojwani
 
Dynamics 365 Business Rules Dynamics Dynamics
Dynamics 365 Business Rules Dynamics DynamicsDynamics 365 Business Rules Dynamics Dynamics
Dynamics 365 Business Rules Dynamics Dynamics
heyoubro69
 
Analysis of Billboards hot 100 toop five hit makers on the chart.docx
Analysis of Billboards hot 100 toop five hit makers on the chart.docxAnalysis of Billboards hot 100 toop five hit makers on the chart.docx
Analysis of Billboards hot 100 toop five hit makers on the chart.docx
hershtara1
 

Storage Methods for Nonstandard Data Patterns

  • 1. Storage Methods
 for
 Nonstandard Data Patterns BOB BURGESS DATABAS E OPERATIONS ENGINEER
  • 2. 2 Agenda Intro Choices Available To You Choices I Tested Testing Methods What I Saw When Loading Data What I Saw When Using Data Storage Engine Comparison Conclusions
  • 3. 3 WHO IS THI S GUY?
  • 4. 4 • Bob Burgess • Developer, then DBA • 1997, Oracle & Sybase • 2007, MySQL at Radian6 => Salesforce • 2015, MySQL at Shopify • bob.burgess@shopify.com
  • 5. • 2006 • Platform to let merchants easily sell online and in person • 243,000+ Active stores / $14B in sales / 150 Countries • Large MySQL Installation • Hiring! 5
  • 6. 6 Don’t Panic • All slides will be posted to the conference site & Slideshare • Test scripts and test data will be posted to Github “bobburgess” • bob.burgess@shopify.com
  • 7. 7 Why Am I Doing This? • I can’t be the only one • Surprising results
  • 9. 9 “Normal” Tables • A few numbers and “average-size” varchar columns • Couple of indexes • Artificial or random primary key
  • 10. 10 Unusual Tables • Very tiny rows • Very large rows • Large random primary key
  • 11. Unusual Tables • Very tiny rows • Very large rows • Large random primary key 11 • Multiple TB • Two bigints • Generally-increasing primary key • InnoDB
  • 12. Unusual Tables • Very tiny rows • Very large rows • Large random primary key 12 • De-duplication • SHA1 hash • binary(20) • Completely random primary key • InnoDB
  • 13. Unusual Tables• Very tiny rows • Very large rows • Large random primary key 13 • De-duplication • SHA1 hash • binary(20) • Completely random primary key • InnoDB • Yves Trudeau (Percona) • Auto-increment PK • Index on 1st 5 bytes of binary(20) hash • Trigger to check for Duplicates
  • 18. 18 Choices • Storage: Solid-state vs. Spinning Rust • Arrays of Storage (RAID levels) • Storage Engine… • suitability for data shape • suitability for access patterns • adaptability to slower storage
  • 20. 20 Primary Key • Auto-Increment (Sequential) Integer • Random Integer • Random Large (20 bytes) • Auto-Increment (Sequential) Integer With Trigger
  • 22. 22 Data Shape: Tiny Rows create table tinyrows ( id bigint primary key, payload bigint);
  • 23. 23 Data Shape: Tiny Rows create table tinyrows ( id bigint auto_increment primary key, payload bigint);
  • 24. 24 Data Shape: Tiny Rows create table tinyrows ( id bigint auto_increment primary key, payload bigint, index i (payload));
  • 25. 25 Data Shape: “Average” Rows create table averagerows ( id bigint primary key, num0 bigint, char1 varchar(60), num1 decimal (10,2), num2 double, char2 varchar(60), char3 varchar(50));
  • 26. 26 Data Shape: “Average” Rows create table averagerows ( id bigint auto_increment primary key, num0 bigint, char1 varchar(60), num1 decimal (10,2), num2 double, char2 varchar(60), char3 varchar(50));
  • 27. 27 Data Shape: “Average” Rows create table averagerows ( id bigint auto_increment primary key, num0 bigint, char1 varchar(60), num1 decimal (10,2), num2 double, char2 varchar(60), char3 varchar(50), index i1 (num0), index i2 (char1), index i3 (char3), index i4 (num2));
  • 28. 28 Data Shape: “Average” Rows create table averagerows ( id binary(20) primary key, num0 bigint, char1 varchar(60), num1 decimal (10,2), num2 double, char2 varchar(60), char3 varchar(50), index i1 (num0), index i2 (char1), index i3 (char3), index i4 (num2));
  • 29. 29 Data Shape: “Average” Rows create table averagerows ( newid bigint auto_increment primary key, real_id binary(20), num0 bigint, char1 varchar(60), num1 decimal (10,2), num2 double, char2 varchar(60), char3 varchar(50), index id_helper (real_id(6)), index i1 (num0), index i2 (char1), index i3 (char3), index i4 (num2));
  • 30. 30 Data Shape: “Average” Rows create trigger averagerows_bi before insert on averagerows for each row begin select count(*) into @c from averagerows where real_id = new.real_id; if @c != 0 then set @m=concat('Duplicate entry ''',hex(new.real_id),''' for key ''PRIMARY'''); signal SQLSTATE '23000' set message_text=@m, mysql_errno=1062; end if; end;
  • 31. 31 Data Shape: “Average” Rows create trigger averagerows_bi before insert on averagerows for each row begin select count(*) into @c from averagerows where real_id = new.real_id; if @c != 0 then set @m=concat('Duplicate entry ''',hex(new.real_id),''' for key ''PRIMARY'''); signal SQLSTATE '23000' set message_text=@m, mysql_errno=1062; end if; end; Do we have this one already? YES Raise an error
  • 32. 32 Data Shape: Large Rows create table largerows_ai ( id bigint primary key, payload1 varchar(2000), payload2 varchar(2000), payload3 varchar(2000), payload4 varchar(2000));
  • 33. 33 Data Shape: Large Rows create table largerows_ai ( id bigint auto_increment primary key, payload1 varchar(2000), payload2 varchar(2000), payload3 varchar(2000), payload4 varchar(2000));
  • 34. 34 Data Shape: Large Rows create table largerows_ai ( id bigint auto_increment primary key, payload1 varchar(2000), payload2 varchar(2000), payload3 varchar(2000), payload4 varchar(2000), index i1 (payload1(40)), index i2 (payload2(767));
  • 36. 36 Storage Engine: InnoDB • Very Mature • Well understood • Continually updated • Supported by Galera Cluster
  • 37. 37 Storage Engine: TokuDB • Was separately-licensed; bought by Percona last year • Built into Percona Server now • Extreme data compression • Online table alters • Other benefits • Not supported by Galera Cluster
  • 38. 38 Storage Engine: Deep • Separately-licensed product • Distributed as a complete package, based on 5.6 • Does data compression • Self-tuning using constant data analysis • Other benefits • Not supported by Galera Cluster
  • 39. 39 Filesystem • ext4, xfs, others • Journaling uses IO and can be disabled
  • 41. 41 Hardware Load Generator Database 1 Gbe Dell 2950-III 32 GB RAM Two 4-core 3GHz Xeon processors SSD and HDD storage Ubuntu 14.04 Measured SSD IOPS (fio: random RW / 5G file): 9750 read, 3254 write Desktop 8 GB RAM Intel i7 processor SSD storage Ubuntu 14.04
  • 42. 42 Software Load Generator Database Ubuntu 14.04 Percona Server 5.6.28 deepSQL 5.6.28-21214 Ubuntu 14.04 go v.1.2.1
  • 43. 43 Data Loading • in go for speed • Loop until stopped: • Fill buffer with 1000 (or 10000) rows • Send buffer to LOAD DATA INFILE • Very low CPU and network on load-gen box • Concurrency of 1 and 20 • github.com/bobburgess
  • 44. 44 Data Usage (Work that DB) • in go for speed • Loop until stopped: • Select by PK • Select by each secondary index 
 (column starts with random value) • Insert a row of random data • Very low CPU and network on load-gen box • Concurrency of 20, 60, and 100 • github.com/bobburgess
  • 45. 45 DB Server Measurements • in bash ’cause I’m lazy (and speed not required) • Loop until stopped: • Take measurements • Output measurements • Remember old values (for differential measurements) • sleep for 1 sec minus the time taken for the measurements • Very lightweight • github.com/bobburgess
  • 46. 46 DB Server Measurements • Rows per second inserted & selected • Disk IOs per second, read & write • Bytes per second, read & write • Size of mysqld process • Size of data on disk • CPU %, User-time & System-time
  • 47. 47 DB Server Measurements • Rows per second inserted & selected • Disk IOs per second, read & write • Bytes per second, read & write • Size of mysqld process • Size of data on disk • CPU %, User-time & System-time Measure of throughput Possible to use slower storage? Possible to use slower storage? Wasteful of memory? Bloated? Possible to use less storage? Lower = can handle more load
  • 48. 48 Testing Flow • Start DB monitor on DB server (output to file) • Start up required processes on load-gen box • Check DB server for unexpected activity • Check load-gen box for unexpected activity • Check load-gen box for CPU or network bottlenecks • Stop test processes when data set large enough
  • 49. 49 Plotting the Data • R • Define columns columns <- c(“Seconds”, “rowInsPerSec", “rowSelPerSec", “IOPSR", “IOPSW", “BpSR", “BpSW", "ProcSizekB", “FilesizeB", “UserTime", "SystemTime") • Read In Data tr_ai_ni_load_1ses_ssd_inno <- read.csv("~/test/innodb/tinyrows_ai_ldi.1.csv", header=FALSE, col.names=columns, stringsAsFactors=FALSE) • github.com/bobburgess
  • 50. 50 Plotting the Data • Example: Two plots with running-average lines par(mar=c(5, 9, 4, 6) + 0.1) options(scipen=15) Xmin=1 Xmax=14432 Ymin=0 Ymax=120 smooth=100 # First plot(seq(Xmax), avg_ai_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], col="red", pch=".", xlab="", ylab="", ylim=c(Ymin,Ymax), type="p", axes=FALSE, main="") axis(2,ylim=c(Ymin,Ymax), col="red", las=1) mtext("IOPS - Write", side=2, line=3) box() lines(seq(Xmax), filter(avg_ai_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], rep(1/(smooth+1),(smooth+1)), sides=2), col="red", lwd=2) par(new=TRUE) # Second plot(seq(Xmax), avg_rnd_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], col="blue", pch=".", xlab="", ylab="", ylim=c(Ymin,Ymax), type="p", axes=FALSE) lines(seq(Xmax), filter(avg_rnd_i_load_20ses_ssd_inno$IOPSW[Xmin:Xmax], rep(1/(smooth+1),(smooth+1)), sides=2), col="blue", lwd=2) # Finish up axis(1,at=seq(0,Xmax,60),labels=seq(0,Xmax/60)) mtext("Minutes", side=1, col="black", line=2) legend("topright",c("Auto-Inc PK","Random PK"),fill=c("red","blue"))
  • 53. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 54. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 55. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 56. 56 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 57. 57 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 58. 58 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 59. 59 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 60. 60 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 61. 61 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 62. 62 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 200,000
  • 63. 63 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 64. 64 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 65. 65 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 66. 66 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 67. 67 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 68. 68 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 69. 69 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 70. 70 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 71. 71 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 72. 72 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 73. 73 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 74. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 75. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 76. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 77. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 78. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 79. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 80. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 81. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 82. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 82
  • 83. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 83
  • 84. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 84
  • 85. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 85
  • 86. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 87. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple ?!
  • 88. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 89. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple …
  • 90. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 91. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 92. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 93. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 93
  • 94. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 94
  • 95. 95 InnoDB… Bulk-Load Single-Session 1 
 Multi-Session 0 Primary Key 
 Auto-Inc 1
 Random 1
 Large 0
  • 97. 97 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 98. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 98
  • 99. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 99
  • 100. 100 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 101. 101 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 102. 102 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 103. 103 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple 40-60
  • 104. 104 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 105. 105 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 106. 106 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 107. 107 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 108. 108 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 109. 109 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 110. 110 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple Difference with InnoDB is not as great
  • 111. 111 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 112. 112 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 113. 113 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 114. 114 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 115. 115 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 116. 116 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 117. 117 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 118. 118 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 119. 119 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 120. 120 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 121. 121 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 122. 122 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 123. 123 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 124. 124 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 125. 125 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 126. 126 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 127. 127 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 128. 128 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 129. 129 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 130. 130 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 131. 131 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 132. 132 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 133. 133 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 134. 134 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 135. 135 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 136. 136 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 137. 137 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 138. 138 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 139. 139 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 140. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 141. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 142. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 143. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 144. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 145. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple Same shape as PK-Only, 1 Session
  • 146. 146 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 147. 147 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 148. 148 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 149. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 150. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 151. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 152. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 154. 154 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 155. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 156. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple InnoDB TokuDB
  • 157. 157 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 158. 158 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 159. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 160. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 161. 161 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 162. 162 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 163. 163 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 164. 164 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 165. 165 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 166. 166 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 167. 167 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 168. 168 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 169. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 170. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 171. 171 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 172. 172 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 173. 173 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 174. 174 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 175. 175 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 176. 176 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 177. 177 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 178. 178 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 179. 179 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 180. 180 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 181. 181 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 182. 182 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 183. 183 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 184. 184 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 185. 185 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 186. 186 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple InnoDB TokuDB
  • 187. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 188. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 189. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 190. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 191. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 192. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 193. Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 194. 194 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 195. 195 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 196. 196 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 197. 197 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 198. 198 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 199. 199 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 200. 200 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 201. 201 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 202. 202 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 203. 203 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 204. 204 Storage Engine Row Size________ Primary Key_________ Indexing Sessions
 InnoDB TokuDB Tiny Average Large Auto-Inc Auto-Inc+Trig PK Only 1 20
 Deep Random Random Lrg Multiple
  • 206. 206 Usage Performance • Each row size • Auto-Increment PK • Inserted by multiple threads • disk files of 2X or 3X cache size
  • 207. 207 Usage Performance • Loop this block: • Several selects • One Insert • 20, 60, 100, 200 concurrent • Count Com_insert and Com_select on server side
  • 208. 208 Usage Performance “Average” Rows InnoDB TokuDB Deep Rows 3,264,053 6,742,470 5,324,183 Avg. Row Length 366 174 180 ~2 GB on disk
  • 209. 209 Tiny Rows (Select) 20 sessions 60 sessions 100 sessions 200 sessions
  • 216. 216 What I Learned • Vast differences depending on use-case • Some patterns not as bad as first thought (i.e. Random PK) • Some patterns worse than first thought (i.e. with bytes/row)
  • 217. 217 Take-Aways • Test for your use-case • Don’t assume you already know how the DB will respond • Don’t trust anyone, especially me. Test it yourself!
  • 218. 218 THANK YOU ! SLI DES WI LL BE ONLINE BOB.BURGESS @SH OPIFY.COM 
 GITHUB.COM/BOBBU RGESS
 
 PLEASE F ILL O UT AN EVALUATION! is hiring!
  翻译: