数据库相关

1. sql调优

  1. 对查询进行优化, 避免全表扫描,首先应考虑在 where及order by涉及的列上使用索引
  2. 避免在where子句中对字段进行null值判断, 否则将导致引擎放弃使用索引而进行全表扫描,如:
select id form t where num is null

可以在num设置默认值0,确保表中的num列没有null值,然后这样查询

select id form t where num = 0
  1. 避免在where子句中使用!=或<>操作符, 否则引擎放弃使用索引而进行全表扫描.
  2. 避免在where子句中使用or来连接条件,如果一个字段有索引, 一个字段没有索引, 引擎将放弃使用索引而使用全表扫描,如:
select id from t where num=10 or name='admin'

可以这样查询:

select id from t where num = 10
union all
select id from t where name='admin'
  1. in 和 not in 也要慎用, 否则会导致全表扫描, 如
select id from t where num in(1,2,3)

对于连续的数值, 能用between不要用in

select id from t where num between 1 and 3
  1. 避免在where子句中对字段进行表达式或者函数操作,否则引擎放弃使用索引而进行全表扫描.
  2. 避免使用模糊查询, 可使用全文检索
  3. 避免使用 * , 使用具体字段代替 *

2. 引擎问题

特点 Myisam BDB Memery InnoDB Archive
存储限制 没有 没有 64TB 没有
事物安全 支持 支持
锁机制 表锁 页锁 表锁 行锁 行锁
B树索引 支持 支持 支持 支持
哈希索引 支持 支持
全文索引 支持
集群索引 支持
数据缓存 支持 支持
索引缓存 支持 支持
数据可压缩 支持 支持
空间使用 N/A 非常低
内存使用 中等
批量插入的速度 非常高
支持外键 支持

  • 最常使用的两种存储引擎
  • Myisam存储引擎. 当create创建新表时, 为指定新表的存储引擎时, 默认使用Myisam. 数据文件和索引文件可以放置在不同的目录, 平均分布io, 获得更快的速度.
  • innoDB(MySQL的默认引擎)存储引擎提供了具有提交, 回滚和崩溃恢复能力的事物安全, 但是对比 Myisam的存储引擎, InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引

  • 如何选择合适的存储引擎
    选择标准: 根据应用特点选用合适的存储引擎, 对于复杂的应用系统可以根据实际情况选择多种引擎进行组合.
  1. Myisam: 插件式存储引擎, 他是在web, 数据仓库和其他应用环境下最常使用的存储引擎之一
  2. InnoDB: 用于事物处理应用程序, 具有众多特性, 包括ACID事物支持
  3. Memory: 将所有数据保存在RAM中, 在需要快速查找引用和其他类似数据的情况下, 可提供极快的访问.
  4. Merge: 允许MySQLDBA或开发人员将一系列等同的Myisam表以逻辑方式组合在一起, 并作为一个对象引用他们, 对于诸如数据仓库等VLDB环境十分合适.

3. 数据持久化

  1. 数据持久化就是把内存中数据模型转化为存储模型
  2. 数据持久化的好处
  3. 程序代码重用性强, 即使更换数据库, 只需要更改配置文件, 不必重写程序代码
  4. 业务逻辑代码可读性强, 在代码中不会有大量sql语言, 提高程序可读性
  5. 持久化技术可以自动优化, 以减少对数据库的访问量, 提高程序运行效率

你可能感兴趣的:(数据库相关)