数据库优化--MySQL、Oracle、redis的优化

MySQL优化方法
1.选取最适用的字段属性,可以的情况下,应该尽量把字段设置为NOT NULL
2.使用连接(JOIN)来代替子查询
3.使用联合来代替手动创建的临时表
4.增删改或者多条查询数据时使用事务操作
5.锁定表(代替事务的另一种方法)
6.使用外键(锁定表的方法可以维护数据的完整性,但它不能保证数据的关联性,应该使用外键)
7.可以优化SQL查询算法,提高查询速度

8.给数据量大的查询次数频繁而修改次数少的数据表添加索引,提升查询速度

MySQL优缺点:
优点:体积小、速度快、总体拥有成本低、开源,支持多种操作系统,提供接口支持多种语言连接操作。
其核心程序采用完全的多线程编程,可以灵活地为用户提供服务而不会耗费过多的系统资源,MySQL具有灵活
而安全的权限和口令系统,客户与MySQL数据库连接是,所有的口令传送被加密,还支持主机认证。支持大型
数据库,支持千万条记录的数据库,拥有非常快速而且稳定的基于线程的内存分配系统,可以持续使用而不必
担心其稳定性。
缺点:不支持热备份,MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用

mysqladmin来重读用户权限时才发生改变;

Oracle的优化方法:
物理优化:
1)Oracle的运行环境(网络,硬件配置)
2)使用合适的优化器
3)合理配置oracle实例参数
4)建立合适的索引(减少IO)
5)将索引数据和表数据分开在不同的表空间上(降低IO冲突)

6)建立表分区,将数据分别存储在不同的分区上(以空间换取时间,减少IO)

逻辑优化:

1)可以对表进行逻辑分割,如中国移动用户表,可以根据手机尾数分成10个表,这样对性能会有一定的
作用
2)Sql语句使用占位符语句,并且开发时候必须按照规定编写sql语句(如全部大写,全部小写等)oracle
解析语句后会放置到共享池中, 如:
select * from Emp where name=?这个语句只会在共享池中有一条,而如果是字符串的话,那就根据不同名
字存在不同的语句,所以占位符效率较好
3)数据库不仅仅是一个存储数据的地方,同样是一个编程的地方,一些耗时的操作,可以通过存储过程
等在用户较少的情况下执行,从而错开系统使用的高峰时间,提高数据库性能
4)尽量不使用*号,如select * from Emp,因为要转化为具体的列名是要查数据字典, 比较耗时
5)选择有效的表名 对于多表连接查询,可能oracle的优化器并不会优化到这个程度, oracle 中多表查询
是根据FROM字句从右到左的数据进行的,那么最好右边的表(也就是基础表)选 择数据较少的表,这样排序更快
速,如果有link表(多对多中间表),那么将link表放最右边作为基础表,在默认情况下oracle会自动优化,但是如
果配置了优化器的情况下,可能不会自动优化,所以平时最好能按照这个方式编写sql
6)Where字句规则: Oracle 中Where字句时从右往左处理的,表之间的连接写在其他条件之前,能过滤
掉非常多的数据的条件,放在where的末尾, 另外!=符号比较的列将不使用索引,列经过了计算(如变大写等)
不会使用索引(需要建立起函数), is null、is not null等优化器不会使用索引
7)使用Exits Not Exits 替代 In Not in
8)合理使用事务,合理设置事务隔离性,数据库的数据操作比较消耗数据库资源的,尽量使用批量处

理,以降低事务操作次数

oracle优缺点:

优点:Oracle数据库是目前使用最广泛的数据库管理系统,具有完整的数据管理功能、是完备关系的关系型数

据库产品,并且实现了分布式处理功能,具有很强的开放性、可伸缩性、并行性、安全性等,

缺点:服务收费,而且比较昂贵,对硬件的要求很高,管理维护麻烦,操作比较复杂,需要技术含量高。

Redis的优化:
1. 根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。
2. 当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
3. 如果需要使用持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使
用虚拟内存以及diskstore方式。
4. 不要让你的Redis所在机器物理内存使用超过实际内存总量的3/5。
5. 尽量不要开启Redis的VM选项,即虚拟内存功能,因为它的内存管理成本很高。

6. 设置redis.conf中的maxmemory选项,告诉Redis当使用了多少物理内存后就开始拒绝后续的写入请求。

Redis的持久化机制:
1.定时快照方式(snapshot)
2.基于语句追加文件的方式(aof)
3.虚拟内存(VM)
4.Diskstore方式


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值