关闭

mysql常见问题分享 - baidu

标签: mysql数据库百度
400人阅读 评论(0) 收藏 举报
分类:

今天就记录这些, 给大家分享一下

mysql常见问题分享 - baidu

百度数据库-架构

  1. 多点写入 – 队列 会造成数据不一致
  2. 中间层 具有 : 读写分离, 连接池,负载均衡, – 中间层不能有问题
  3. 使用虚ip obproxy
  4. BGW_VIP&PORT + ttm + DBPROXY_PORT - 一组ip 百度的使用的架构

mysql优化 - 对的,错的, 不确定

建议用innodb b+树

索引

  1. 主键 有序 便于查找- b+树存储, 聚簇索引的叶子节点存放
  2. 查找的值相对于原表较少, 建议用索引 eg 1000w 检索1条数据使用索引
  3. 一个表不建议超过5个索引
  4. 通过索引日志, 进行删减索引
  5. mysql只能用一个索引 可以用联合索引
  6. mysql索引的使用取决与b树的结构
  7. 相同的语句执行多次可能会使用索引不一致, - 进行优化

  8. explain调试 支持select 如果使用delete 可以转化为select 因为delete

  9. explain 主要kan key:使用的索引类型, rows扫描的行, Extra
  10. 组合索引 (a,b,c) a,c | b,c不会使用索引 原因在于B树的数据结构特性造成的

mysql使用原则

  1. 数据量, 流量, 复杂度 - 不能同时满足
  2. 量小 没有啥大问题
  3. 数据量大,查询要慎重 - 注意反作弊 ,有好多不可控性

设计技巧和规范-常见问题

  1. 字段类型不匹配
  2. 1条sql和多条sql的性能 - 1条复杂的sql 会产生一些临时表, 还会阻塞其它的 - 主从
  3. auto_commit = 0
  4. ctrl+c 不能中断 mysql请求
  5. int是否够用? – 记录形式的 – 增长量不可控用 bigint
  6. 数据库计数? select count(*)在innodb上表不会存 会造成扫描全表 页面上的 统计不要在数据库上统计
  7. 大结果集 – 可以对id分段-在拼接, 否则会造成网卡堵塞
  8. 数据库中有热数据的概念 是否有用的sql

设计技巧和规范-表设计

  1. 单表不要超过1000w , 超出考虑分表
  2. 可以适量增加冗余减少表关联

设计技巧和规范-增删改查类

  1. 不要在备库中进行 大的统计查询 - 会不精准
  2. 多条的insert拼接成一条提交效率会高
  3. 批量update和delete 可以采用 delete from table where id in (id 100个左右)
  4. 删除数据多, 要命中索引, 增加limit –可以利用主键的自增的特点,
  5. 捕获数据库反馈的错误信息 打印到日志中
  6. 尽量使用cache 数据量小可以用
  7. 避免查询结果超过正常的需求– 要有价值的数据显示出来就可以了
  8. 减少表的关联, 大表/主表
  9. 尽量减少distinct like group by order by ,union
  10. 尽量不用子查询, 子查询 会锁表, 效率低

设计技巧和规范-分库分表

  1. 按行数
  2. 分段取模
  3. 按时间

压测工具

  1. tdpcopy

rd和dba合作的流程

今天非常有幸听了百度db一位同事讲解mysql 受益匪浅
来自资审db高端人才 xxx [这里不方便透露人家的姓名] 具有5年sql经验

资源我已经上传到csdn上了不用积分的, 大家可以参考下

PPT 下载地址

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:105238次
    • 积分:1885
    • 等级:
    • 排名:千里之外
    • 原创:76篇
    • 转载:14篇
    • 译文:5篇
    • 评论:21条
    文章分类
    最新评论