mysql常见问题分享 - baidu
2015-11-18 20:45
375 查看
今天就记录这些, 给大家分享一下
中间层 具有 : 读写分离, 连接池,负载均衡, – 中间层不能有问题
使用虚ip obproxy
BGW_VIP&PORT + ttm + DBPROXY_PORT - 一组ip 百度的使用的架构
查找的值相对于原表较少, 建议用索引 eg 1000w 检索1条数据使用索引
一个表不建议超过5个索引
通过索引日志, 进行删减索引
mysql只能用一个索引 可以用联合索引
mysql索引的使用取决与b树的结构
相同的语句执行多次可能会使用索引不一致, - 进行优化
explain调试 支持select 如果使用delete 可以转化为select 因为delete
explain 主要kan key:使用的索引类型, rows扫描的行, Extra
组合索引 (a,b,c) a,c | b,c不会使用索引 原因在于B树的数据结构特性造成的
量小 没有啥大问题
数据量大,查询要慎重 - 注意反作弊 ,有好多不可控性
1条sql和多条sql的性能 - 1条复杂的sql 会产生一些临时表, 还会阻塞其它的 - 主从
auto_commit = 0
ctrl+c 不能中断 mysql请求
int是否够用? – 记录形式的 – 增长量不可控用 bigint
数据库计数? select count(*)在innodb上表不会存 会造成扫描全表 页面上的 统计不要在数据库上统计
大结果集 – 可以对id分段-在拼接, 否则会造成网卡堵塞
数据库中有热数据的概念 是否有用的sql
可以适量增加冗余减少表关联
多条的insert拼接成一条提交效率会高
批量update和delete 可以采用 delete from table where id in (id 100个左右)
删除数据多, 要命中索引, 增加limit –可以利用主键的自增的特点,
捕获数据库反馈的错误信息 打印到日志中
尽量使用cache 数据量小可以用
避免查询结果超过正常的需求– 要有价值的数据显示出来就可以了
减少表的关联, 大表/主表
尽量减少distinct like group by order by ,union
尽量不用子查询, 子查询 会锁表, 效率低
分段取模
按时间
来自资审db高端人才 xxx [这里不方便透露人家的姓名] 具有5年sql经验
资源我已经上传到csdn上了不用积分的, 大家可以参考下
mysql常见问题分享 - baidu
百度数据库-架构
多点写入 – 队列 会造成数据不一致中间层 具有 : 读写分离, 连接池,负载均衡, – 中间层不能有问题
使用虚ip obproxy
BGW_VIP&PORT + ttm + DBPROXY_PORT - 一组ip 百度的使用的架构
mysql优化 - 对的,错的, 不确定
建议用innodb b+树索引
主键 有序 便于查找- b+树存储, 聚簇索引的叶子节点存放查找的值相对于原表较少, 建议用索引 eg 1000w 检索1条数据使用索引
一个表不建议超过5个索引
通过索引日志, 进行删减索引
mysql只能用一个索引 可以用联合索引
mysql索引的使用取决与b树的结构
相同的语句执行多次可能会使用索引不一致, - 进行优化
explain调试 支持select 如果使用delete 可以转化为select 因为delete
explain 主要kan key:使用的索引类型, rows扫描的行, Extra
组合索引 (a,b,c) a,c | b,c不会使用索引 原因在于B树的数据结构特性造成的
mysql使用原则
数据量, 流量, 复杂度 - 不能同时满足量小 没有啥大问题
数据量大,查询要慎重 - 注意反作弊 ,有好多不可控性
设计技巧和规范-常见问题
字段类型不匹配1条sql和多条sql的性能 - 1条复杂的sql 会产生一些临时表, 还会阻塞其它的 - 主从
auto_commit = 0
ctrl+c 不能中断 mysql请求
int是否够用? – 记录形式的 – 增长量不可控用 bigint
数据库计数? select count(*)在innodb上表不会存 会造成扫描全表 页面上的 统计不要在数据库上统计
大结果集 – 可以对id分段-在拼接, 否则会造成网卡堵塞
数据库中有热数据的概念 是否有用的sql
设计技巧和规范-表设计
单表不要超过1000w , 超出考虑分表可以适量增加冗余减少表关联
设计技巧和规范-增删改查类
不要在备库中进行 大的统计查询 - 会不精准多条的insert拼接成一条提交效率会高
批量update和delete 可以采用 delete from table where id in (id 100个左右)
删除数据多, 要命中索引, 增加limit –可以利用主键的自增的特点,
捕获数据库反馈的错误信息 打印到日志中
尽量使用cache 数据量小可以用
避免查询结果超过正常的需求– 要有价值的数据显示出来就可以了
减少表的关联, 大表/主表
尽量减少distinct like group by order by ,union
尽量不用子查询, 子查询 会锁表, 效率低
设计技巧和规范-分库分表
按行数分段取模
按时间
压测工具
tdpcopyrd和dba合作的流程
今天非常有幸听了百度db一位同事讲解mysql 受益匪浅来自资审db高端人才 xxx [这里不方便透露人家的姓名] 具有5年sql经验
资源我已经上传到csdn上了不用积分的, 大家可以参考下
PPT 下载地址
相关文章推荐
- MySQL中的integer 数据类型
- MySQL存储过程
- Android之获取手机上的图片和视频缩略图thumbnails
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- 房产界已上市和IPO路上的难兄难弟:房天下与房多多
- 数据库链接字符串查询网站
- 利用百度地图提供的API做的应用
- MySQL 备份和恢复策略
- 搜狗百度360市值齐跌:搜索引擎们陷入集体焦虑?
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)