mysql性能优化
一, mysql总览:
二, 主从同步
依赖binlog来实现完成同步
解决方案: 两阶段提交
buffer pool、change buffer、log buffer与redo log交互
-------------------------------------------------------------------------------------------------------------
关系型数据库在高并发下
一, 表数据过大的解决方案
1.1 单表多大才考虑拆表?
根据阿里开发手册: 单表行数超过500W或者单表数据容量超过2G
1.2 列数多大? 按照mysql官网,innodb建议不超过1017列,如果列数很大,考虑用mongodb,列数过大会导致分页
1.3 数据库表的拆分
分库分表
冷热数据分离
电商类
交易类
微信(朋友圈、我的相册)
历史数据归档
1.4 分库分表策略
水平拆分:
按照数据取模的问题在于,如果扩容了表,那么原来表里的数据就需要重新迁移会很麻烦.
针对这种解决方案:
1, 一致性hash算法 0-(2的32 - 1)
2, 按照范围分片
二, 分库分表实战
以用户表为例,考虑如下:
全局唯一ID的生成方式:
雪花算法: