mysql架构组成

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  1. 配置文件
    • window中:my.ini文件
    • linux中: /etc/my.cnf
  2. 物理文件组成
    • 日记文件-->日记文件的选项配置文件(my.ini/my.cnf)

      • 错误日记

        log-error
        记录的主要是较为严重的警告和错误消息,每次启动和关闭的详细信息等,默认关闭的。

      • 二进制日记

        log-bin
        非常重要,将来做master/slave机制,slave要和master同步是来读取master的binlog来完成同步的。
        有些错误操作也需要通过binlog来恢复的。
        默认是关闭的,实际应用中应该开启。

      • 更新日记

        目前版本已经不支持

      • 查询日记

        log
        记录所有的查询,开启之后对mysql性能影响比较大,一般是不开启的。

      • 慢查询日记

        log-slow-queries

    • 数据文件

      • .frm文件
      • .myd文件
      • .myi文件
      • .idb文件
  3. 系统架构
    • 服务器管理中的模块
      • SQL Interface SQL接口
      • Parse 解析器
    • Optimizer 优化器模块
      • 对于mysql而言任何查询语句都需要经过这个优化器模块来解析查询语句,并得到最优的执行计划(优化器模块觉得最优的),然后就会按这个计划执行查询
      • Cache 缓存
      • 存储引擎
        • MyISAM 存储引擎
          • 安装mysqlserver就已经安装上
          • 创建表的指定即可
          • 不支持主外键关系,不支持事务的。
          • 表锁 即使操作一条记录也会锁住整个表,那么不适合高并发的操作。
          • 缓存的时候只缓存索引,不缓存真实数据,真实数据是通过os级别的缓存去完成的。
        • Innodb 存储引擎
          • 安装mysqlserver就已经安装上
          • 创建表的指定即可
          • 支持外键关系,支持事务操作(大部分场景使用)
          • 行锁,操作时候只锁住一行,适合高并发操作
          • 缓存的时候不仅缓存索引还缓存真实数据,对内存要求高,而且内存大小对性能影响
        • NDB存储引擎(cluster)
          • NDB存储引擎要独立于mysqlserver,单独安装
          • cluster其实是集群自动管理的一种机制
          • mysql这方面不是很成熟,用的很少
          • PS: 有一家公司叫percona 出了一个数据库percona(对mysql进行了修改),该公司也出了一款存储引擎叫xtrdb,完全可以代替xtrdb,并且性能和并发做的更好,并且提供了一些工具。阿里巴巴大部分mysql都是在percona的原型加以修改。

转载于:https://my.oschina.net/u/2279209/blog/743931

你可能感兴趣的:(mysql架构组成)