从其他数据库迁移到MySQL
Oracle,SQL Server迁移到MySQL
一些变化
不再使用存储过程、视图、定时作业
表结构变更,如采用自增id做主键,以及其他语法变更
业务SQL改造,不使用窗口函数、CTE等功能
制定MySQL业务开发规范
数据迁移
MySQL Workbench、Navicat
OGG
ODBC/JDBC
dataX
otter + canal
全量一次复制 + 增量变化应用
数据校验
yugong (for Oracle)
理解MySQL特点
单进程,多线程
在超高并发情况下,对多核CPU的利用不足
不使用MySQL5.1以前版本,多核CPU利用差
MySQL新版本高并发可以很好利用多核CPU
每个连接只能用到一个逻辑CPU
每个Query/SQL只能用到一个逻辑CPU
使用/优化建议
使用新版本,抛弃旧版本
用高主频,多核CPU
不跑复杂SQL
事务及早结束
InnoDB buffer pool (简称IBP)是最大的内存单元
innodb_buffer_pool_free,innodb_buffer_pool_wait_free,innodb_buffer_pool_pages_dirty
MySQL5.7起可在线调整IBP
每个session(连接/会话)分配sort/join/read buffer/tmp table
使用/优化建议
IBP一般设置物理内存的50%~70%
加大物理内存,减少物理I/O,提高TPS
session级buffer按需分配,因此适当就好,无需过大
所谓的高速查询缓存反倒是影响并发性能的鸡肋,直接禁用
随着MyISAM逐步被抛弃,key buffer只需设置非常小
磁盘I/O是数据库应用场景最大的瓶颈
OLTP业务场景中,绝大多数是随机I/O读写
UNDO log以顺序写、随机读为主
REDO log、binlog、relay log以顺序写、顺序读为主
使用/优化建议
加大物理内存,减少物理I/O
采用高速磁盘设备
适当创建索引,减少随机读
不存图片、文件、长文本等大对象数据
不跑复杂SQL,表达式运算、函数运算等
不跑长事务
不跑全文检索
不支持bitmap索引
不支持hash join
MySQL8.0之前不支持统计直方图
开源、免费、跨平台
和Linux深度结合
特别适合互联网应用场景
入门学习成本低
社区庞大,生态完善
人才储备充足
新版本新功能越来越赞,值得信赖