zoukankan      html  css  js  c++  java
  • 学习记录-MySQL实战45讲 ~ 9

    普通索引 vs 唯一索引

     ~ 查询性能,唯一索引有停止条件,由于操作都是按页的,差距很小

     ~ 更新操作中有change buffer,写入磁盘是在查询/数据库关闭/后台线程里触发,由于唯一索引要判断是否唯一,故无法用到,普通索引改为唯一索引,大量插入可能性能下降,写多读少的非唯一索引适用

    redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘的 IO 消耗

    虽然是只更新内存,但是在事务提交的时候,我们把 change buffer 的操作也记录到 redo log 里了,所以崩溃恢复的时候,change buffer 也能找回来

    优化器索引选择:基于采样统计数据数据(analyze table),综合比较扫描行数、是否使用临时表、是否排序等,也可force index

    字符串太长建前缀索引,取一部分减少空间浪费,但是会增加扫描行数,且会失去覆盖索引对查询性能的优化,需要综合评估

    倒序OR哈希值建索引 ~ 无法支持范围,哈希要计算+增加字段,倒序要反序

    脏页 ~ 内存数据页跟磁盘数据页内容不一致

    flush时机: a. redo log满   b. 内存不足 c. 空闲时段 d. 数据库正常关闭

    可能的性能问题

          一个查询要淘汰的脏页个数太多,会导致查询的响应时间明显变长

          日志写满,更新全部堵住,写性能跌为 0

    设计策略控制刷脏页的速度

          innodb_io_capacity  InnoDB 磁盘能力

          innodb_max_dirty_pages_pct 是脏页比例上限,默认值是 75%

          innodb_flush_neighbors 参数就是用来控制这个行为的,值为 1 的时候会有上述的“连坐”机制,值为 0 时表示不找邻居,自己刷自己的

  • 相关阅读:
    hibernate执行createSQLQuery时字段重名的问题
    注意JDBC驱动的版本和JDK的版本是否匹配 JDBC连接Mariadb
    MariaDBConn用于链接MariaDB的管理类
    PLSQL Developer对oracle中的数据进行备份恢复
    JQuery判断浏览器类型
    IE与非IE window.onload调用
    如何升级centos到最新版本
    bootstrap 后台模板
    FontAwesome 4.7.0 中完整的675个图标样式CSS参考
    Linux Crontab及使用salt进行管理
  • 原文地址:https://www.cnblogs.com/it-worker365/p/14469263.html
Copyright © 2011-2022 走看看