加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mssql 按关键字排序 MySQL调优

发布时间:2022-10-11 18:30:27 所属栏目:MsSql教程 来源:未知
导读: 调优的目的?让吞吐量更大,响应速度更快。
关于数据库优化,我们从以下5个维度进行。
一.优化表结构
表结构尽量遵循三范式的原则,在进行多表查询的时候,必要时可以采用反范式化进行优化

调优的目的?让吞吐量更大,响应速度更快。

关于数据库优化,我们从以下5个维度进行。

一.优化表结构

表结构尽量遵循三范式的原则,在进行多表查询的时候,必要时可以采用反范式化进行优化。

什么叫范式?

一共有6大范式,知道前5个就行。满足了高级范式,就一定满足低级范式。比如满足第三范式,就一定满足第1,2范式。

范式的优缺点?

反范式化?

数据库的设计原则?三少一多

数据库表建模的工具?

二.优化逻辑查询

关联查询优化:最好"被驱动表加索引"

优化器中join 的原理?

子查询优化:

子查询优化:

排序优化:

尽量使用索引完成order by排序。如果where 和order by 后面的列相同就用单索引,不同就用联合索引。对FileSort进行调优提高sort_buffer_size:不管哪种算法,提高这个内存值肯定加大效率。提高max_length_for_sort_data:这个参数就是一个界限,需要返回的列总长度大于这个值就使用双路,小于这个值就使用单路。

group by优化:

分页查询优化:

关于select *关于Limit 1:

三.优化物理查询(索引)

使用隐藏索引:之前索引要是删除后,发现效果不好或者出错,只能重新添加索引。一删一加浪费性能,现在就可以先隐藏索引mssql 按关键字排序,让索引不起作用。发现效果不错,再删除索引。

四.使用缓存

对于热点数据可以使用redis或者Memcached作为缓存,减少数据库的压力

五.库级优化

从以下3个方面进行调优。

1.优化MySQL服务器:在my.cnf或者my.ini文件的[mysqld]组中配置。

sort_buffer_size:表示每一个需要进行排序的线程分配的缓存区的大小。提高这个参数的值可以提高order by和group by的速度。对于4GB左右的服务器建议设置为6-8M。如果有100个连接,实际分配的总共排序缓存区的大小为6 * 100 = 600MB。join_buffer_size = 8M:表示联合查询操作时所能使用的缓存区大小,每一线程独享。read_buffer_size:表示每个线程连续扫描时为扫描的每一个表分配的缓冲区的大小。默认为64K,可设置为4M。innodb_flush_log_at_trx_commit:表示何时将缓存区的数据写入日志文件。0:表示每秒1次,将数据写入日志文件并将日志文件写入磁盘。1:表示每次提交事务,将数据写入日志文件并将日志文件写入磁盘。2:表示每次提交事务,将数据写入日志文件,每隔1s将日志文件写入磁盘。innodb_log_buffer_size:事务日志所使用的缓存区,log buffer的值。max_connections:表示允许连接到MySQL数据库的最大数量。back_log:用于控制MySQL监听TCP端口时设置的挤压请求栈大小,比如:max_connections为500,其他来的请求就可以放入这个栈中。5.0之前为50,现在一般为50+(max_connections / 5)。thread_cache_size:线程缓冲池的大小。wait_timeout:一个请求的最大连接时间,4GB的服务器一般设置为5-10。interactive_timeout:表示服务器在关闭连接前等待行动的秒数。

2.优化数据库结构:

使用分析表,检查表,优化表的语句创建全局通用表空间:create tablespace...,相对于独享表空间,可以节约元数据方面的内存。

3.大表优化:

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!