从其他数据库迁移到MySQL及MySQL特点

时间:2022-01-08 12:43:44

从其他数据库迁移到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深度结合

特别适合互联网应用场景

入门学习成本低

社区庞大,生态完善

人才储备充足

新版本新功能越来越赞,值得信赖