关于mysql:MySQL学习笔记1

8次阅读

共计 1094 个字符,预计需要花费 3 分钟才能阅读完成。

  1. MySQL 整体分为两层,1.server 层,2. 存储引擎(InnoDB,Memory,MyISAM)等,默认应用 InnoDB。
  2. server 层分为连接器,查问缓存,分析器,优化器,执行器。外围服务根本都在这层,不同存储引擎共用同一个 server 层。
  3. 应用时须要先链接,应用的协定是 TCP,须要出入 IP 地址,端口,用户名和明码。
  4. 链接后长时间不应用该链接会处于 Sleep 状态,超时(wait_timeout)后会断开连接,默认 8 小时。
  5. 连贯分为长连贯和短连贯;长连贯是连贯胜利后如果始终有查问动作则始终不会断开;短连贯是执行过几轮查问后会断开连接,再次应用须要重连。
  6. 连贯过程简单耗时,所以倡议应用长连贯。但长连贯应用过多也会导致 MySQL 内存涨的比拟块,这是因为在查问过程中长期应用的内存会治理在连贯对象中,这样连贯不中断内存不开释。重大时会导致 MySQL 内存占用量过高而被零碎强制杀掉,这样就会呈现 MySQL 异样重启。
  7. 为了防止这个问题能够:

    1. 定期断开长连贯。应用一段时间,或者程序外面判断执行过一个占用内存的大查问后,断开连接,之后要查问再重连.
    2. 如果你用的是 MySQL 5.7 或更新版本,能够在每次执行一个比拟大的操作后,通过执行 mysql_reset_connection 来从新初始化连贯资源。这个过程不须要重连和从新做权限验证,然而会将连贯复原到刚刚创立完时的状态
  8. 查问缓存就是在连贯建设后的查问操作的第一步,如果命中缓存就间接返回后果完结查问,看似会进步查问效率。
  9. 然而大多数状况下我会倡议你不要应用查问缓存,为什么呢?因为查问缓存往往弊大于利。
  10. 查问缓存变更频繁,只有对表进行更新,那表中的查问缓存全副清空。好在 MySQL 也提供了这种“按需应用”的形式,你能够将参数 query_cache_type 设置成 DEMAND,这样对于默认的 SQL 语句都不应用查问缓存。而对于你确定要应用查问缓存的语句,能够用 SQL_CACHE 显式指定,像上面这个语句一样

    mysql> select SQL_CACHE * from T where ID=10;
  11. 解析器,辨认 sql 语法,次要做词法剖析和语法分析。
  12. 优化器,在解析器执行实现后引擎就能了解用户的行为了,但很多行为逻辑后果统一但因为两头执行程序不同而执行效率也不同。如:优化器是在表外面有多个索引的时候,决定应用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连贯程序。优化器的作用就是决定执行程序,保障执行效率。
  13. 执行器,依据优化后的语句调用存储引擎的接口,将执行后果收集并返回给客户端。
  14. 留神一点,表名是否存在,表中列是否存在等判断都是在解析器阶段进行判断的。
正文完
 0