zoukankan      html  css  js  c++  java
  • MySQL的随笔

    数据库引擎

    MySQL5.0支持的存储引擎包括MyISAM,InnoDB、MEMORY、MERGE、BDB等等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。

    MyISAM

      MyISAM不支持事务,也不支持外键,优势是访问速度快。对事务完整性没有要求,并且查询插入较多的应用基本上都可以使用这个引擎来建表。锁机制方面,MyISAM支持表锁。

    InnoDB

      InnoDB则提供了具有提交,回滚和崩溃恢复能力的事务安全。相比MyISAM,InnoDB的写的处理效率较差并且会占用更多的磁盘空间来保留数据和索引。MySQL支持外键的只有InnoDB。InnoDB支持行锁。

    数据类型的选择

    char和varchar

    char长度固定而varchar可变,因此char处理速度快,但是浪费存储空间,varchar则相反。但是随着版本的更新varchar的性能也在改变。

    对于MyISAM存储引擎,建议使用固定长度的数据列代替可变长度的数据列。

    对于InnoDB存储引擎:建议使用varchar。由于InnoDB的数据表里的数据行都使用指向数据列值的头指针,并没有区分固定长度和可变长度,因此性能没多大差别,但是存储的总量有差,因此选择varchar。

    设置索引的原则

    搜索的索引列不一定是所有选择的列。最适合索引的列是出现在where子句中的列,或连接子句中指定的列,而不是出现在select关键字后选择列表的列。

    使用索引。索引列的基数越大,索引的效果越好。如果只用来记录性别只含有F和M只能得出一半的行,效果并不好。

    使用短索引。较小索引涉及的磁盘IO较少,并且对于较短的键值,索引高速缓存能够容纳更多。

    最左前缀原则。

    不要过度使用索引。 索引需要维护。

    优化SQL语句的一般步骤

    1.通过show status命令了解SQL的执行频率

     

    Com_xxx表示 每个xxx语句的执行频率  例如:Com_select  Com_insert

    Connections :试图连接MySQL服务器的次数等等

    2.定位执行效率较低的SQL语句

    通过慢查询日志定位  使用show processlist命令查看当前线程,对一些锁表操作进行优化。

    3.通过explain分析低效SQL的执行计划

    4.确定问题并采取相应的优化措施。

    以上仅仅是大概的流程...详细流程有空再写。

  • 相关阅读:
    ansible变量
    nginx连接php测试
    redis发布订阅
    堡垒机实例以及数据库操作
    nginx简介,使用
    protobuf
    go NSQ
    go mod
    GIT版本管理工具教程
    linux命令查询网站
  • 原文地址:https://www.cnblogs.com/helloDuo/p/9435567.html
Copyright © 2011-2022 走看看