数据库的优化问题

如果你的项目运行的速度相对较慢可以使用数据库优化,数据库优化的方法有挺多种的,一起来看看吧。

1.使用数据缓存。可以将数据缓存到文件或者redis,memcache这样的高速储存系统中,来减少数据库的查询次数。

2.结构优化。

  **选择合适的数据库引擎常见的数据库引擎有innodb,myisam  查询较多的场景可以使用myisam,需要事务支持的场景可以选择innodb。

  **满足基本的三范式。

  **选择合适的字段类型       优先级  数字> 时间 > 字符串。

  ** 适当的字段冗余,来提高数据的查询效率

3.定位慢查询语句。  

  //启动 mysql
  > mysqld_safe --user=mysql --slow_query_log --slow_query_log_file=/tmp/slow-query.log --long_query_time=1

  上面这条命令启动 mysql 之后, 在运行过程中, 可以将运行时间超过 1 秒的sql 记录到文件下。

4.语句优化。

  **不要使用select * 。

  **最好不要使用null。

  **在where字段上添加索引。

  **尽量不要在where字句上进行函数操作  例子  :(select id from t where substring(name,1,3) = 'abc')。

  **模糊查询中,%前置不要使用索引   例子  :   “ %前置 ”。

  **使用or语句要注意   左右两侧都有索引才能使用索引。

  **对于分组的数据MySQL会对数据自动排序,可以强制其不排序  order by null。

5.索引优化。

  索引是一种单独的,物理的对数据库进行排序的存储结构,可以指数级别的提高查询的速度。我们可以对where语句后的字段添加索引,就是条件字段。如果查询多个字段我们可以增加组合索引。

  但注意索引也不能化用,过多的索引会增加数据更新的效率。

6.分库分表。

  分库,一般按照业务的功能进行对数据表经行拆分,使数据表更加有条理性。

  分表有两种,垂直拆分和水平拆分 垂直拆分就是将一些不常用的字段单独的放到一张表中,如果查询的数据过多可以使用水平分表,比如按照年, 月, 日等。

   ==拆分表需要对代码进行调整, 所以要慎重.

7.主从复制,读写分离。

  可以创建多台数据库服务器, 一些数据库专门用来写入数据, 另外一些数据库做同步数据, 实现读写分离, 降低单台数据库压力, 提高读写的效率。

8.中文分词。

  mysql 全文检索不支持中文, 所以针对大段文本的检索效率不高, 我们可以借助中文分词的方式来提高检索的效率. 常见的分词有 SCWS, phpAnalysis , 还有一个基于python的分词系统不错, 叫结巴分词.

原文地址:https://www.cnblogs.com/wwlong/p/10176237.html