面试题-MySQL

  1. mysql b+tree索引与hash索引区别

  2. mysql 双机热备 与 读写分离

  3. mysql 什么情况下会索引失效

  4. mysql “联合索引?最左前缀匹配?综合评估?”如何建立索引?索引的顺序如何?

  5. mysql 什么样的列适合加索引,如果一个列的值只有1和2,那么它适合加索引么(重要程度:★★★☆☆)

    • 在where从句,group by从句,order by从句,on从句中出现的列

    • 索引的字段越小越好

    • 在建立联合索引时,离散度大的列放大联合索引的前面

      只有1和2不适合建索引,区分度非常低

      例:一个7200(转 /每分钟)的硬盘,每旋转一周所需时间为60×1000÷7200=8.33毫秒,则平均旋转延迟时间为8.33÷2=4.17毫秒(最多旋转1圈,最少不用旋转,平均情况下,需要旋转半圈)。

  6. sql慢查询优化

    • 字段类型转换导致不用索引,如字符串类型的不用引号,数字类型的用引号等,这有可能会用不到索引导致全表扫描;
    • mysql 不支持函数转换,所以字段前面不能加函数,否则这将用不到索引;
    • 不要在字段前面加减运算;
    • 字符串比较长的可以考虑索引一部份减少索引文件大小,提高写入效率;
    • like % 在前面用不到索引;
    • 根据联合索引的第二个及以后的字段单独查询用不到索引;
    • 不要使用 select *;
    • 排序请尽量使用升序 ;
    • or 的查询尽量用 union 代替 (Innodb);
    • 复合索引高选择性的字段排在前面;
    • order by / group by 字段包括在索引当中减少排序,效率会更高。

除了上述索引使用规则外,SQL 编写时还需要特别注意一下几点:

  1. 尽量规避大事务的 SQL,大事务的 SQL 会影响数据库的并发性能及主从同步;

  2. 分页语句 limit 的问题;

  3. 删除表所有记录请用 truncate,不要用 delete;

  4. 不让 mysql 干多余的事情,如计算;

  5. 输写 SQL 带字段,以防止后面表变更带来的问题,性能也是比较优的 ( 涉及到数据字典 解析,请自行查询资料);

  6. 在 Innodb上用 select count(*),因为 Innodb 会存储统计信息;

  7. 慎用 Oder by rand()。

  8. mysql分析诊断工具

    • mysqldumpslow
    • mysql -profile
    • mysql -explain
  9. mysql索引类型
    四种不同的索引类型:

    • 主键索此 ( PRIMARY )
    • 唯一索引 ( UNIQUE )
    • 普通索引 ( index\normal )
    • 全文索引(FULLTEXT , MYISAM 及 mysql 5.6 以上的 Innodb )
  10. mysql复制原理

  11. mysql引擎

  • MYISAM
  • INNODB
  • MEMORY
  1. mysql锁

  2. Innodb如何处理死锁?

Innodb目前处理死锁的方法是:将持有最少行级排他锁的事务进行回滚。

  1. mybatis 动态sql

  2. redis命中率有多高

即对数运算的符号英语,是名词logarithms缩写而来。
对数运算定义如下:若an=b(a>0且a≠1) 则n=logab。
其中,a叫做“底数”,b叫做“真数”,n叫做“以a为底的b的对数”。
零和负数没有对数。

负载均衡 4层 与7层区别

  • qq_43638135
    妲己再美究为妃: 博主没有想过自己接一些私活干吗?我现在还没毕业,但是我也确实听说外挂市场自动化游戏脚本市场挺火热的,并且报酬也很丰厚,但是具体的我也不是很清楚,求解答。 (1个月前 #47楼) 查看回复(2) 举报 回复
    22