SlideShare una empresa de Scribd logo
1 de 117
Descargar para leer sin conexión
Modern Web 2016
恰如其分的 MySQL 設計技巧
Ant
yftzeng@gmail.com
2016-08-24
2/117
程式開發 X 資訊安全 X 智慧財產權 X 創業
Profile
3/117
剛好符合分寸。形容做事、說話十分恰當。
4/117
Premature optimization is the root of all evil
過早最佳化是萬惡的根源
- Donald Knuth -
5/117
架構是演進的,預想有益身心健康
預先策想
6/117
GB
TB
PB
MB
7/117
新平台預計下一季上線。
營運預計導入多少流量?
我可以先行準備。
有流量再說,快就好。
那我之後 ( 有空 ) 再做。
新平台上線
8/117
為什麼網站很慢又常當機?
調整架構需要一週。
這麼久?不能快點嗎?
沒有辦法 ...
上線一週後
9/117
MVP 若沒有控制好,技術債將迅速增長
Minimum Viable Product
先前程式常不能用
遺舊程式不忍棄之
結構變動反覆無常
10/117
只做最低限度產品 (MVP)
最終得到的可能是壞產品
11/117
Pivot
ObjectGo
✖
✖
✖
✖
✖
Research Development
12/117
2015
➊ 架構先決
無視人員、流程只講技術,是耍白痴
架構會影響公司文化、商業擴展;思維更要超越程式碼層次
13/117
2015
➋ 沒有完美的架構,只有最適的架構
無視場景只講架構,是耍流氓
若無法舉出架構的缺陷,代表你還無法掌握
盲目套用別人的架構,並不會讓你變得跟他一樣好
14/117
2015
➌ 架構是演進的,預想但不過早調優
無視未來只求現有,是耍自閉
兵馬未動,糧草先行,預想下一步,下下一步,甚至下下下一步 ...
15/117
Monolith
Microservices
SOA
Nanoservices
Picoservices ?
16/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
17/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
18/117
License
19/117
License
程式原始碼是否在意授權對方修改、散布?
GNU GPL 的互惠性 / 感染性
散布于對方時,強制啟動授權
( 接案 ) 軟體交付時
嵌入式設備
自己的程式 GPL 程式
GPL 程式
20/117
License
C/Java + MySQL/Percona →
PHP/PDO + MySQL/Percona →
C/Java/PHP + MariaDB →
自己的程式 Database
GPL 程式
21/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
22/117
當業務需求變更程式設計時
預想但不過早調優
總工程師不該把每次新需求都認為獨立需求
( 多想二分鐘,團隊可以不必自虐 )
Elastic business
23/117
狀態
原表格設計
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
24/117
狀態
新業務需要儲存「鎖定」狀態
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
25/117
狀態
其實若狀態是互斥的,則可以合併
Elastic business
id name ... status
1 Apple ... 0
2 Banana ... 1
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
{ 0: deleted, 1: enabled, 2: locked }
26/117
標籤雲
原表格設計
Elastic business
id name tag1
1 Apple admin
2 Banana reporter
3 Cherry reporter
SELECT * FROM {Table}
WHERE tag1 = ‘admin’
27/117
標籤雲
新增標籤
Elastic business
id name tag1 tag2 tag3
1 Apple admin reporter programmer
2 Banana reporter programmer NULL
3 Cherry reporter admin NULL
SELECT * FROM {Table}
WHERE (tag1 = ‘admin’ OR tag2 = ‘admin’ OR tag3 = ‘admin’)
AND (tag1 = ‘reporter’ OR tag2 = ‘reporter’ OR tag3 = ‘reporter’)
SELECT * FROM {Table}
WHERE ‘admin’ IN (tag1, tag2, tag3)
AND ‘reporter’ IN (tag1, tag2, tag3)
ALTER TABLE !!
28/117
Tag
Elastic business
id tag
1 admin
1 reporter
1 programmer
2 reporter
... ...
新方法
標籤雲
id name X X X
1 Apple X X X
2 Banana X X X
SELECT * FROM {Table}
INNER JOIN ‘Tag’ AS t1 USING (id)
INNER JOIN ‘Tag’ AS t2 USING (id)
WHERE t1.tag = ‘admin’
AND t2.tag = ‘reporter’
29/117
Elastic business
或是 M:N
標籤雲
id name
1 Apple
2 Banana
id tag_id
1 1
1 2
1 3
2 2
2 3
tag_id name
1 admin
2 reporter
3 programmer
30/117
Elastic business
廣告需求
營運有新的需求,受眾在
一天內不要看到相同廣告。
瞭解,預計一個工作天。
第一天
31/117
Elastic business
廣告需求
營運有新的需求,受眾在
小時內不要看到相同廣告。
瞭解,預計二個工作天。
第二天
時間粒度不同
32/117
Elastic business
廣告需求
營運有新的需求,受眾在
一天內不要看到同類廣告。
瞭解,預計八個工作天。
第三天
目標粒度不同
不能一次講清楚嗎?
33/117
Elastic business
廣告需求
受眾在 M 時間內不要看到 N 廣告
預想
該需求的延伸會是什麼?
M → 年 / 季 / 月 / 週 / 時 / 分 / 秒
N → 相同 / 同類
看到的次數? 1/2/3...
裝置有別?
區域?
廣告主屬性?
34/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
35/117
Workload
Processing Intensive Capacity
CPU intensive
Memory intensive
Storage/IO intensive
Bandwidth intensive
OLTP
OLAP
Data warehouse
Throughput
Latency
Memory footprint
Service-level agreement
Bond
Performance
Security
Cost restriction
36/117
OLTP (On-Line Transaction Processing)
➊ 應用 : Customer-oriented
➋ 回應時間 (response time) 要求較高。
➌ 併發 (concurrency) 要求較多。
➍ 資料處理量 (volume) 少。
➎ 交易 (transaction) 完整性高。
➏ 安全性 (security) 要求較高。
Workload
Processing
37/117
Workload
OLAP (On-Line Analytical Processing)
➊ 應用 : Market-oriented
➋ 回應時間 (response time) 要求較低。
➌ 併發 (concurrency) 要求較少。
➍ 資料處理量 (volume) 多。
➎ 交易 (transaction) 完整性低。
➏ 安全性 (security) 要求較低。
Processing
38/117
Workload
Data warehouse
➊ 應用 : Subject-oriented
➋ 熱資料 (Hot) 本地、快取、粒度、一致性。
➌ 暖資料 (Warm) 分布、快取、複製。
➍ 冷資料 (Cold) 索引、壓縮、合併、備份。
Processing
39/117
Workload
Intensive
BandwidthCPU
Memory Storage/IO
40/117
Workload
Capacity
Latency
Memory
footprint
Trade-off
Throughput
41/117
2015
High throughput Low latency
42/117
2015
千萬人同時在線
電子商務、線上媒體
低延遲回應
廣告平台 (30ms) 、高頻交易 (0.5~3ms) 、醫療等關鍵設備
43/117
機房只能給你 4U 共 2 台機器,
請您務必提供每秒 1 萬次的處理效能。
每次請求包括產生 46 張圖片及 46 次加密演算法
Workload
Capacity
44/117
Workload
Capacity
45/117
Workload
Capacity
Optimal capacity
46/117
Workload
Capacity
Optimal capacity
47/117
Workload
Capacity
Language / Framework / Algorithm / Hardware
300 Server → Performance +10x → 30 Server
(Price cost reduction)
(Maintenance cost reduction)
48/117
Workload
Bond
Security
Cost
Restriction
Trade-off
Performance
49/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
Architecture
and more ...
CONSILIENCE
50/117
Scale-up
Hardware
CPU
➊ 快取對 InnoDB 影響很大 (CPU Cache) 。
➋ 超執行緒 (Hyper threading) 有助益。
➌ 通常啟用 Node Interleaving ,可避免 NUMA 問題。
➍ 多核心處理
MySQL 5.5
最佳表現為 16 核心,同時連線數 128 。
MySQL 5.6
支援至少 64 核心,同時連線數處理不受影響;
但 RW 在同時處理 128 連線數後顯著下降。
MySQL 5.7
支援至少 64 核心,同時連線數處理不受影響;
解決 RW 同時處理連線數下降問題。
51/117
Scale-up
Hardware
CPUs
North Bridge
(MCH)
Memory
PCIe
FSB (10.6 GB/s)
Intel Xeon (Older)
CPUs
North Bridge
(IOH)
Memory
PCIe
QBI (25.6 GB/s)
Intel Xeon (Newer)
52/117
Scale-up
Hardware
Memory
➊ 原則上愈多愈好
➋ 確保能把所需資料表全儲存在記憶體中。
53/117
Scale-up
Hardware
Storage
➊ 原則上, PCIe NVMe SSD > SSD > HDD 。
Ref: http://agigatech.com/blog/ssds-some-cold-hard-numbers-to-flavor-your-opinions/
54/117
Scale-up
Hardware
Storage
➊ 原則上, PCIe NVMe SSD > SSD > HDD 。
➋ 區塊大小 (Block size) 對 SSD 很重要。
55/117
Ref: http://www.thessdreview.com/our-reviews/intel-ssd-dc-p3608-review-1-6tb-over-5gbs-and-850k-iops/2/
56/117
Ref: http://jdevelopment.nl/2009/02/
Bandwidth
IOPS
57/117
Ref: http://jdevelopment.nl/2009/02/
Bandwidth
IOPS
ThroughputLatency
58/117
Scale-up
Hardware
Storage
➊ 原則上, PCIe NVMe SSD > SSD > HDD 。
➋ 區塊大小 (Block size) 對 SSD 很重要。
➌ 循序寫 +RAID 的 HDD 不比 SSD 差。
59/117Ref: SSD Deployment Strategies for MySQL (2010-04-15).pdf (p16)
Ref: http://yoshinorimatsunobu.blogspot.tw/2009/05/tables-on-ssd-redobinlogsystem.html
RAID-10 > RAID-5 (RAID 控制器很重要 )
battery backed up write cache (BBWC)
60/117
Scale-up
OS Kernel
➊ vm.swappiness = 1
61/117
Scale-up
OS Kernel
➊ vm.swappiness = 1
➋ vm.dirty_background_ratio / vm.dirty_ratio
62/117
Scale-up
OS Kernel
➊ vm.swappiness = 1
➋ vm.dirty_background_ratio / vm.dirty_ratio
➌ IO scheduler (DEADLINE or NOOP)
63/117
Scale-up
File system
OLTP
Ext4 / XFS
Journal / O_DIRECT
COMPRESSION
...
64/117
Scale-up
Database
Design
Configuration
MT-malloc: jemalloc / tcmalloc / etc.
DB Engine: InnoDB / TokuDB / RocksDB
Schema design / ID
Index
Partitions
default_time_zone = ‘+00:00’
max_connections
sort_buffer_size
join_buffer_size
read_buffer_size
innodb_use_native_aio = 1
innodb_file_per_table = 1
innodb_buffer_pool_size = { 65~80% of Mem }
innodb_thread_concurrency = { 2xCPUs }
innodb_read_io_threads = { CPUs }
innodb_write_io_threads = { CPUs }
65/117
Scale-up
Database
OLTP
innodb_flush_method
innodb_max_dirty_pages_pct
innodb_page_size
innodb_io_capacity
innodb_flush_neighbors
innodb_random_read_ahead
innodb_read_ahead_threshold
...
66/117
Scale-up
Connection
Connection pool (Client/Application)
➊ 不是所有應用程式都支援。
➋ 無法得知伺服器的狀態及承載。
➌ 遭遇錯誤時,必須執行完整的資源清理。
➍ 會保持連線,佔用伺服器連線數及線程快取。
67/117
Scale-up
Connection
DatabaseApplication
架構問題
最大連線數 100 最大連線數 200
68/117
Scale-up
Connection
DatabaseApplication
架構問題
最大連線數 200
{ 剩餘連線數 100}
最大連線數 100
keep
69/117
Scale-up
Connection
DatabaseApplication
架構問題
最大連線數 100
Application
最大連線數 100
keep
keep
最大連線數 200
{ 剩餘連線數 0}
70/117
Scale-up
Connection
DatabaseApplication
架構問題
最大連線數 100
Application
最大連線數 100
Application
最大連線數 100
keep
keep
最大連線數 200
{ 剩餘連線數 0}
71/117
Scale-up
Connection
架構問題
MySQL
➊ 線程模式。
➋ 不需 Connection pool 就可以支持高併發。
➌ 支持短連接使用資料庫。
➍ 新版 5.7 建立連線的開銷更少。
5.6 版的 62.5% ;
5.5 版的 40% 。
72/117
Scale-up
Application
效能通常有 99% 的問題在於 Application
➊ N+1 queries / ORM
➋ Bad SQL
➌ Bad Schema Design
➍ Big SQL
➎ Big Transaction
➏ Big Batch
73/117
Scale-up
Application
效能通常有 99% 的問題在於 Application
➊ N+1 queries / ORM
➋ Bad SQL
➌ Bad Schema Design
➍ Big SQL
➎ Big Transaction
➏ Big Batch
74/117
Scale-up
Application
(MySQL) CHAR vs. VARCHAR
➀ 如果更新頻繁且長度不一, CHAR 通常比較快。
➁ 在 MySQL 5.7.7 之後, CHAR 通常比 VARCHAR 快。
75/117
Scale-up
Application
(MySQL) VARCHAR vs. VARCHAR
➀ 某些編碼下, VARCHAR(760) 與 VARCHAR(770) 快得多。
➁ 某些編碼下, VARCHAR(190) 比 VARCHAR(200) 快得多。
➂ 不過在 MySQL 5.7.7 之後,前兩者幾乎沒什麼差別。
雖然只差 10 ,但效能在這長度間有個跳躍
雖然只差 10 ,但效能在這長度間有個跳躍
76/117
Scale-up
Application
INDEX
➀ Primary Index 對 MySQL 很重要,循序式比亂序式快。
➁ Index 愈多不一定愈好。
➂ Composite Index 需善用。
77/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
Architecture
and more ...
CONSILIENCE
78/117
Replication
Scale-out
Master
ReplicaReplica Replica
79/117
Replication
Scale-out
Master
ReplicaReplica Replica
Applications
writeread
80/117
Clustering
Scale-out
81/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
RW RW RW RW
Master-Master
82/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
RW RW RW RW
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
UPDATE t
SET …
WHERE id = 1
T2
83/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
RW RW RW RW
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
UPDATE t
SET …
WHERE id = 1
T2
100 → 200 100 → 200
84/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
RW RW RW RW
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
UPDATE t
SET …
WHERE id = 1
T2
100 → 200 100 → 200
Deadlock / Rollback
85/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
Master-Master
Load balancing
W R
RR
86/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
SELECT ...
T2
W R
RR
T3
SELECT ...
T4
SELECT ...
T5
Load balancing
87/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
SELECT ...
T2
W R
RR
T3
SELECT ...
T4
SELECT ...
T5
Load balancingLoad balancing
HA
Monitor
88/117
2015
Percona XtraDB Cluster: Multi-node writing and Unexpected deadlocks
2012-08-17
https://www.percona.com/blog/2012/08/17/percona-xtradb-cluster-multi-node-writing-and-unexpected-deadlocks/
Avoiding Deadlocks in Galera - Set up HAProxy for single-node writes
and multi-node reads
2013-09-17
http://www.severalnines.com/blog/avoiding-deadlocks-galera-set-haproxy-single-node-writes-and-multi-node-reads
Optimizing Percona XtraDB Cluster for write hotspots
2015-06-03
https://www.percona.com/blog/2015/06/03/optimizing-percona-xtradb-cluster-write-hotspots/
89/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
UPDATE t
SET …
WHERE id = 1
T1
Master-Master
SELECT ...
T2
W R
RR
T3
SELECT ...
T4
SELECT ...
T5
Load balancingLoad balancing
HA
Monitor
Hot-Spot
1
Complexity
2
90/117
2015
Database
#1
Database
#2
Database
#3
...
Applications
RW RW RW RW
Master-Master
Smart Client
91/117
Sharding
Scale-out
92/117
Disaster Recovery
Scale-out
93/117
Disaster Recovery
Scale-out
Latency ?
Bandwidth ?
94/117
Multi Regional Resiliency
Scale-out
Ref: https://cloud.google.com/solutions/scalable-and-resilient-apps
95/117
Multi Regional Resiliency
Scale-out
Ref: https://securosis.com/blog/resilient-cloud-network-architectures-design-patterns
96/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
97/117
大數據
BigData
98/117
Ref: https://www.talend.com/blog/2015/07/15/hadoop-summit-2015-takeaway-the-lambda-architecture
99/117
Ref: http://www.slideshare.net/akirillov/data-processing-platforms-architectures-with-spark-mesos-akka-cassandra-and-kafka#p4
100/117
Ref: https://medium.baqend.com/nosql-databases-a-survey-and-decision-guidance-ea7823a822d
101/117
2015
我們很少在大數據架構中
見到 RDBMS 的蹤影
但 Google/Facebook/Twitter/Uber/Alibaba ...
102/117
大數據
BigData
微服務
Micro-services
X
103/117
大數據
BigData
Hadoop (Java)
Spark (Java/Scala)
Cassandra (Java)
Kafka (Java/Scala)
Pig (Java)
Hive (Java)
HBase (Java)
Flink (Java)
ElasticSearch (Java)
JVM 的天下
104/117
Ref: http://eugenedvorkin.com/seven-micro-services-architecture-advantages/
105/117
部署快
( 起滅快 )
效能高
( 機數少 )
開發速
( 碼量少 )
體積小
編譯式
GC編譯式
JIT
保護編程下限
(IDE/ 除錯 )
保障破壞下限
106/117
部署快
( 起滅快 )
效能高
( 機數少 )
開發速
( 碼量少 )
體積小
編譯式
GC編譯式
容器化
Java 混合雲
JIT
保護編程下限
(IDE/ 除錯 )
保障破壞下限
107/117
Java
Container Size
Oracle JDK (~350 MB)
Oracle JRE (~70 MB)
Oracle Server JRE (~70 MB)
Alpine Java Docker Container ?
只是 JRE 本身
108/117
Java
Container Size
docker-alpine-java
<snip>
curl -jksSLH "Cookie: oraclelicense=accept-securebackup-cookie" ...
rm -rf /opt/jdk/*src.zip 
/opt/jdk/lib/missioncontrol 
/opt/jdk/lib/visualvm 
/opt/jdk/lib/*javafx* 
/opt/jdk/jre/plugin 
/opt/jdk/jre/bin/javaws 
...
</snip>
Ref: https://github.com/anapsix/docker-alpine-java/blob/master/8/92b14/jdk/standard/Dockerfile
109/117
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
License
CONSILIENCE
and more ...
110/117
Java
▐ 問題一 :
Oracle/Java 安裝前需人工同意 Oracle/Java 授權。
▐ 問題二
Oracle/Java 為整體不可分割之授權。
<snip>
(i) you distribute the Redistributables complete and unmodified,
and only bundled as part of Programs,
</snip>
Ref: http://www.oracle.com/technetwork/java/javase/terms/license/index.html
License
Oracle Java 部署時,不得刪減任何程式及文件
111/117
Java
▐ 問題一 :
Oracle/Java 安裝前需人工同意 Oracle/Java 授權。
▐ 問題二
Oracle/Java 為整體不可分割之授權。
<snip>
(i) you distribute the Redistributables complete and unmodified,
and only bundled as part of Programs,
</snip>
Ref: http://www.oracle.com/technetwork/java/javase/terms/license/index.html
License
Oracle Java 部署時,不得刪減任何程式及文件
OpenJDK
( openjdk-7-jre-headless )
有些人不敢用
112/117
部署快
( 起滅快 )
效能高
( 機數少 )
開發速
( 碼量少 )
體積小
編譯式
GC編譯式
容器化
Java 混合雲
JIT
保護編程下限
(IDE/ 除錯 )
保障破壞下限
113/117
部署快
( 起滅快 )
效能高
( 機數少 )
開發速
( 碼量少 )
體積小
編譯式
GC編譯式
容器化
Java 混合雲
JIT
保護編程下限
(IDE/ 除錯 )
保障破壞下限
Go
114/117
大數據
BigData
小結
▐ 未捨棄既有累積的知識 (RDBMS)
▐ 降低開發與維運人員的焦慮感 ( 專注,技術深化 )
▐ 系統異質性低 ( 出錯少,除錯易 )
▐ 依然相容現行大數據架構
▐ 支持容器化、混合雲、私有雲 ( 顧問性質 )
▐ 大數據核心與對外服務層權責分離 ( 兼具安全性 )
▐ 其實大多時候我們不需要大數據解決方案
資料多≠需要大數據解決方案,或許只是垃圾數據多
微服務
Micro-
services
處理慢≠需要大數據解決方案,大多都是程式差,架構弱
115/117
GoGo
HDFS/RDBMS
HDFS/RDBMS
Go
MySQL
MySQL
116/117
2015
➊ 架構先決
➋ 沒有完美的架構,只有最適的架構
➌ 架構是演進的,預想但不過早調優
117/117
yftzeng@gmail.com
https://www.facebook.com/yftzeng.tw
Contact

Más contenido relacionado

La actualidad más candente

Azure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワークAzure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワーク
Kuninobu SaSaki
 

La actualidad más candente (20)

DynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How ToDynamoDBによるソーシャルゲーム実装 How To
DynamoDBによるソーシャルゲーム実装 How To
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
 
半日でわかる コンテナー技術 (応用編)
半日でわかる コンテナー技術 (応用編)半日でわかる コンテナー技術 (応用編)
半日でわかる コンテナー技術 (応用編)
 
Kibana + Winlogbeatで実現:Windowsのログ分析入門
Kibana + Winlogbeatで実現:Windowsのログ分析入門Kibana + Winlogbeatで実現:Windowsのログ分析入門
Kibana + Winlogbeatで実現:Windowsのログ分析入門
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
HTML 語法教學
HTML 語法教學HTML 語法教學
HTML 語法教學
 
やってはいけない空振りDelete
やってはいけない空振りDeleteやってはいけない空振りDelete
やってはいけない空振りDelete
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
 
老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設老朽化したオンプレ環境をクラウドへ移設
老朽化したオンプレ環境をクラウドへ移設
 
クラウドバイデフォルトは新しい日常で加速するハイブリッドクラウド、マルチクラウドデータ保護の最前線とコストの最適化
クラウドバイデフォルトは新しい日常で加速するハイブリッドクラウド、マルチクラウドデータ保護の最前線とコストの最適化クラウドバイデフォルトは新しい日常で加速するハイブリッドクラウド、マルチクラウドデータ保護の最前線とコストの最適化
クラウドバイデフォルトは新しい日常で加速するハイブリッドクラウド、マルチクラウドデータ保護の最前線とコストの最適化
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27OVN 設定サンプル | OVN config example 2015/12/27
OVN 設定サンプル | OVN config example 2015/12/27
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
Amazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用についてAmazon DynamoDBの紹介と東急ハンズでの活用について
Amazon DynamoDBの紹介と東急ハンズでの活用について
 
[Cloud OnAir] Google Cloud とつなぐ色々な方法 〜 つなぐ方法をゼロからご紹介します〜 2019年1月31日 放送
[Cloud OnAir] Google Cloud とつなぐ色々な方法 〜 つなぐ方法をゼロからご紹介します〜 2019年1月31日 放送[Cloud OnAir] Google Cloud とつなぐ色々な方法 〜 つなぐ方法をゼロからご紹介します〜 2019年1月31日 放送
[Cloud OnAir] Google Cloud とつなぐ色々な方法 〜 つなぐ方法をゼロからご紹介します〜 2019年1月31日 放送
 
Cephのベンチマークをしました
CephのベンチマークをしましたCephのベンチマークをしました
Cephのベンチマークをしました
 
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
 
Azure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワークAzure仮想マシンと仮想ネットワーク
Azure仮想マシンと仮想ネットワーク
 
高負荷に耐えうるWeb application serverの作り方
高負荷に耐えうるWeb application serverの作り方高負荷に耐えうるWeb application serverの作り方
高負荷に耐えうるWeb application serverの作り方
 

Destacado

[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
Yi-Feng Tzeng
 

Destacado (20)

談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
 
淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQL淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQL
 
資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)
 
軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險
 
2013-04-13_JSTW-security-for-frontend-engineer (前傳)
2013-04-13_JSTW-security-for-frontend-engineer (前傳)2013-04-13_JSTW-security-for-frontend-engineer (前傳)
2013-04-13_JSTW-security-for-frontend-engineer (前傳)
 
2016 ModernWeb 分享 - 恰如其分 MySQL 程式設計 (修)
2016 ModernWeb 分享 - 恰如其分 MySQL 程式設計 (修)2016 ModernWeb 分享 - 恰如其分 MySQL 程式設計 (修)
2016 ModernWeb 分享 - 恰如其分 MySQL 程式設計 (修)
 
Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)
 
Redis, another step on the road
Redis, another step on the roadRedis, another step on the road
Redis, another step on the road
 
2013-05-18_JSDC.TW-security-for-frontend-engineer-final (後傳)
2013-05-18_JSDC.TW-security-for-frontend-engineer-final (後傳)2013-05-18_JSDC.TW-security-for-frontend-engineer-final (後傳)
2013-05-18_JSDC.TW-security-for-frontend-engineer-final (後傳)
 
無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享無瑕的程式碼 Clean Code 心得分享
無瑕的程式碼 Clean Code 心得分享
 
The Future of Classical Music
The Future of Classical MusicThe Future of Classical Music
The Future of Classical Music
 
PHPConf.TW 2012: A step to better PHP
PHPConf.TW 2012: A step to better PHPPHPConf.TW 2012: A step to better PHP
PHPConf.TW 2012: A step to better PHP
 
2014-10-25 App 及 Maker 開發者防身術 (MOPCON 2014)
2014-10-25 App 及 Maker 開發者防身術 (MOPCON 2014)2014-10-25 App 及 Maker 開發者防身術 (MOPCON 2014)
2014-10-25 App 及 Maker 開發者防身術 (MOPCON 2014)
 
大型 Web Application 轉移到 微服務的經驗分享
大型 Web Application 轉移到微服務的經驗分享大型 Web Application 轉移到微服務的經驗分享
大型 Web Application 轉移到 微服務的經驗分享
 
20130112 web conf-面向網站經營者及網站用戶的個資法衝擊
20130112 web conf-面向網站經營者及網站用戶的個資法衝擊20130112 web conf-面向網站經營者及網站用戶的個資法衝擊
20130112 web conf-面向網站經營者及網站用戶的個資法衝擊
 
[BizLePro] 主題講座 #5:台灣C2C第三方支付服務之發展_20130513_gillight
[BizLePro] 主題講座 #5:台灣C2C第三方支付服務之發展_20130513_gillight[BizLePro] 主題講座 #5:台灣C2C第三方支付服務之發展_20130513_gillight
[BizLePro] 主題講座 #5:台灣C2C第三方支付服務之發展_20130513_gillight
 
[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
[BizLePro] 主題講座 #4:給資訊人的智財導論_20130429_richard
 
[BizLePro] 主題講座 #7:商業利用怎麼行? - 從開源授權十個常見 FAQ 來了解
[BizLePro] 主題講座 #7:商業利用怎麼行? - 從開源授權十個常見 FAQ 來了解[BizLePro] 主題講座 #7:商業利用怎麼行? - 從開源授權十個常見 FAQ 來了解
[BizLePro] 主題講座 #7:商業利用怎麼行? - 從開源授權十個常見 FAQ 來了解
 
2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-ant2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-ant
 
MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化MySQL技术分享:一步到位实现mysql优化
MySQL技术分享:一步到位实现mysql优化
 

Similar a 恰如其分的 MySQL 設計技巧 [Modern Web 2016]

Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
yp_fangdong
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructure
kyhpudding
 
网站存储经验谈-pdf
网站存储经验谈-pdf网站存储经验谈-pdf
网站存储经验谈-pdf
Yu Lin
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化
pigso
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
Monster Supreme
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
Kay Yan
 
对MySQL应用的一些总结
对MySQL应用的一些总结对MySQL应用的一些总结
对MySQL应用的一些总结
Lixun Peng
 
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈
Liang Xie
 
Database与ssd的实践与探索
Database与ssd的实践与探索Database与ssd的实践与探索
Database与ssd的实践与探索
freezr
 

Similar a 恰如其分的 MySQL 設計技巧 [Modern Web 2016] (20)

Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
 
Modern Web Architecture Design Journey
Modern Web Architecture Design JourneyModern Web Architecture Design Journey
Modern Web Architecture Design Journey
 
Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术
 
Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructure
 
网站存储经验谈pdf
网站存储经验谈pdf网站存储经验谈pdf
网站存储经验谈pdf
 
网站存储经验谈-pdf
网站存储经验谈-pdf网站存储经验谈-pdf
网站存储经验谈-pdf
 
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
FreeNAS 企業應用經驗分享 [2016/12/17] @台中資策會
 
Sina my sq概述及优化
Sina my sq概述及优化Sina my sq概述及优化
Sina my sq概述及优化
 
110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
 
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
 
大规模数据处理
大规模数据处理大规模数据处理
大规模数据处理
 
Sth About SSD
Sth About SSDSth About SSD
Sth About SSD
 
对MySQL应用的一些总结
对MySQL应用的一些总结对MySQL应用的一些总结
对MySQL应用的一些总结
 
一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈一个“兼职Dba”的数据库运维经验谈
一个“兼职Dba”的数据库运维经验谈
 
前端性能优化和自动化
前端性能优化和自动化前端性能优化和自动化
前端性能优化和自动化
 
應用Ceph技術打造軟體定義儲存新局
應用Ceph技術打造軟體定義儲存新局應用Ceph技術打造軟體定義儲存新局
應用Ceph技術打造軟體定義儲存新局
 
Database与ssd的实践与探索
Database与ssd的实践与探索Database与ssd的实践与探索
Database与ssd的实践与探索
 
xxxx.pdf
xxxx.pdfxxxx.pdf
xxxx.pdf
 

Más de Yi-Feng Tzeng

Más de Yi-Feng Tzeng (16)

重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision
 
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
 
Testing in Production, Deploy on Fridays
Testing in Production, Deploy on FridaysTesting in Production, Deploy on Fridays
Testing in Production, Deploy on Fridays
 
COSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening KeynoteCOSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening Keynote
 
COSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening KeynoteCOSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening Keynote
 
Severless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board APISeverless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board API
 
給資安工程師開源授權觀念
給資安工程師開源授權觀念給資安工程師開源授權觀念
給資安工程師開源授權觀念
 
Progressive Deployment & NoDeploy
Progressive Deployment & NoDeployProgressive Deployment & NoDeploy
Progressive Deployment & NoDeploy
 
Dev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and ComplianceDev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and Compliance
 
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
 
淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) Compliance
 
量子技術 (2018 03-31)
量子技術 (2018 03-31)量子技術 (2018 03-31)
量子技術 (2018 03-31)
 
Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
 
2014 03-14 PunApp-InstAll15-山寨的界限
2014 03-14 PunApp-InstAll15-山寨的界限2014 03-14 PunApp-InstAll15-山寨的界限
2014 03-14 PunApp-InstAll15-山寨的界限
 

恰如其分的 MySQL 設計技巧 [Modern Web 2016]