MySQL数据库优化(五)

MySQL配置优化

  通过配置my.cnf使数据库达到优化的目的。

1、innodb的缓冲池配置

  innodb_buffer_pool_size  通常配置服务器内存的60%~70%

2、innodb log缓存配置

  innodb_log_buffer_size  这个不宜配置太大,因为日志缓存每秒刷新一次

3、配置缓冲池个数

  innodb_buffer_pool_instances

4、在提交事务的时候,是否刷新日志缓存

  innodb_flush_log_at_trx_commit  这个很重要,对性能影响较大

  这个属性有三个值可选:

  • 0:不会主动触发日志缓冲写入磁盘
  • 1:(默认项)每次提交事务的时候,同时会把日志缓冲刷新到磁盘
  • 2:每次提交事务的时候,会把日志缓冲刷新到磁盘,但是他不同时进行的,而是每秒刷新一次

5、innodb读写IO的线程数

  innodb_read_io_threads

  innodb_write_io_threads

  默认都为4个

6、独立表空间配置

  innodb_read_io_threads  默认是打开的

7、查询缓存

  query_cache_size

 

聚合函数优化

MAX

mysql> SELECT MAX(money) FROM t_order;

这里只需给money加上索引即可

COUNT

mysql> SELECT COUNT(user_id = 1 OR NULL) AS A, COUNT(user_id = 2 OR NULL) AS B FROM t_order;

这种方式不用对数据进行分组也可以获取到某个属性的数量

 

行转列

mysql> SELECT SUM(CASE WHEN u.id = 1 THEN goods_num END) AS A, SUM(CASE WHEN u.id = 2 THEN goods_num END) AS B FROM users u INNER JOIN orders o ON u.id = o.user_id;

 

转载于:https://www.cnblogs.com/huanStephen/p/8127579.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值