1、sql查询速度
2、网卡流量
3、服务器硬件
4、磁盘IO
以上因素并不是时时刻刻都会影响数据库性能,而就像木桶效应一样。如果其中一个因素严重影响性能,那么整个数据库性能就会严重受阻。另外,这些影响因素都是相对的。
例如:当数据量并没有达到百万千万这样的级别,那么sql查询速度也许就不是个重要因素,换句话说,你的sql语句效率适当低下可能并不影响整个效率多少,反之,这种情况,无论如何怎么优化sql语句,可能都没有太明显的效果。
相关内容拓展:
1、SQL查询速度
风险:效率低下的SQL
2、网卡流量
风险:网卡IO被占满(100Mb/8=100MB)
方案:
①减少从服务器的数量。从服务器都要从主服务器上复制日志,所以,从服务器越多,网络流量越大。
②进行分级缓存。前方大量缓存突然失效会对数据库造成严重的冲击。
③避免使用“select * ”进行查询
④分离业务网络和服务器网络
3、磁盘IO
风险:磁盘IO性能突然下降。
方案:使用更好的磁盘设备解决。
希望可以帮到您,谢谢!
1、ORDERBY的索引优化。如果一个SQL语句形如:
SELECT
[column1],[column2],….
FROM
[TABLE]
ORDER
BY
[sort]
在[sort]这个栏位上建立索引就可以实现利用索引进行order
by
优化。
2、WHERE
+
ORDER
BY的索引优化,形如:
SELECT
[column1],[column2],….
FROM
[TABLE]
WHERE
[columnX]
=
[value]
ORDER
BY
[sort]
建立一个联合索引(columnX,sort)来实现order
by
优化。
注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order
by的优化
SELECT
[column1],[column2],….
FROM
[TABLE]
WHERE
[columnX]
IN
([value1],[value2],…)
ORDER
BY[sort]
3、WHERE+
多个字段ORDER
BY
SELECT
*
FROM
[table]
WHERE
uid=1
ORDER
x,y
LIMIT
0,10
建立索引(uid,x,y)实现order
by的优化,比建立(x,y,uid)索引效果要好得多。
MySQL
Order
By不能使用索引来优化排序的情况
*
对不同的索引键做
ORDER
BY
:(key1,key2分别建立索引)
SELECT
*
FROM
t1
ORDER
BY
key1,
key2
*
在非连续的索引键部分上做
ORDER
BY:(key_part1,key_part2建立联合索引key2建立索引)
SELECT
*
FROM
t1
WHERE
key2=constant
ORDER
BY
key_part2
*
同时使用了
ASC
和
DESC:(key_part1,key_part2建立联合索引)
SELECT
*
FROM
t1
ORDER
BY
key_part1
DESC,
key_part2
ASC
*
用于搜索记录的索引键和做
ORDER
BY
的不是同一个:(key1,key2分别建立索引)
SELECT
*
FROM
t1
WHERE
key2=constant
ORDER
BY
key1
*
如果在WHERE和ORDER
BY的栏位上应用表达式(函数)时,则无法利用索引来实现order
by的优化
SELECT
*
FROM
t1
ORDER
BY
YEAR(logindate)
LIMIT
0,10
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)