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

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

特别适合互联网应用场景

入门学习成本低

社区庞大,生态完善

人才储备充足

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

 

posted @ 2019-09-19 15:23  AllenHU320  阅读(222)  评论(0编辑  收藏  举报