• 数据库设计和OOAD
    • 存储引擎
    • 数据类型
    • 索引
      • 索引的类型
    • 视图
    • 存储过程
    • 触发器
    • 事务控制
    • SQL注入攻击
    • 数据分区
    • SQL优化
      • 优化步骤
      • SQL优化
      • 配置优化
      • 架构优化
    • 数据备份
      • 导入和导出
      • ibbackup工具
      • xtrabackup工具
    • 主从复制
    • 集群

    数据库设计和OOAD

    存储引擎

    1. InnoDB
    2. MyISAM

    数据类型

    索引

    索引的类型

    1. B-Tree索引
    2. HASH索引
    3. R-Tree索引(空间索引)
    4. Full-text索引(全文索引)

    视图

    查询的快照,可以将访问权限控制到列上。

    1. create view ... as select ...
    2. drop view ...

    存储过程

    1. create procedure ... (params)
    2. begin
    3. ...
    4. end;
    5. call ...
    1. cursor.callproc('...')

    触发器

    不能用,因为多个行锁可能直接升级为表锁,导致性能低下。

    事务控制

    SQL注入攻击

    数据分区

    SQL优化

    优化步骤

    1. 通过show status了解各种SQL的执行频率。

      1. show status like 'com_%';
      2. show status like 'innodb_%';
      3. show status like 'connections';
      4. show status like 'slow_queries';
    2. 定位低效率的SQL语句 - 慢查询日志。

      1. show processlist
    3. 通过explain了解SQL的执行计划。

      • select_type:查询类型(simple、primary、union、subquery)
      • table:输出结果集的表
      • type:访问类型(ALL、index、range、ref、eq_ref、const、NULL)
      • possible_keys:查询时可能用到的索引
      • key:实际使用的索引
      • key_len:索引字段的长度
      • rows:扫描的行数
      • extra:额外信息
    4. 通过show profilesshow profile for query分析SQL。

    SQL优化

    1. 优化insert语句
    2. 优化order by语句
    3. 优化group by语句
    4. 优化嵌套查询
    5. 优化or条件
    6. 优化分页查询
    7. 使用SQL提示
      • USE INDEX
      • IGNORE INDEX
      • FORCE INDEX

    配置优化

    1. 调整max_connections
    2. 调整back_log
    3. 调整table_open_cache
    4. 调整thread_cache_size
    5. 调整innodb_lock_wait_timeout

    架构优化

    1. 通过拆分提高表的访问效率
      • 垂直拆分
      • 水平拆分
    2. 逆范式理论
      • 数据表设计的规范程度称之为范式(Normal Form)
        • 1NF:列不能再拆分
        • 2NF:所有的属性都依赖于主键
        • 3NF:所有的属性都直接依赖于主键(消除传递依赖)
        • BCNF:消除非平凡多值依赖
    3. 使用中间表提高统计查询速度

    数据备份

    导入和导出

    1. select … into outfile …
    2. load data infile … into table …
    3. mysqldump
    4. mysqlimport

    ibbackup工具

    xtrabackup工具

    主从复制

    集群