数据库优化

数据库优化

当通过客户端提交一条sql后,sql解析引擎会被启动,此时sql解析引擎会优化这条sql,它会帮我们选择一条最优的索引。接下来,数据库引擎会用这条sql命令语义去硬盘中查询数据,然后将数据返回,如果数据量过大,可能造成数据库IO繁忙,大大损伤sql效率,因此才有分页查询。
数据库优化可以分为两部分:

sql优化:要尽量避免全表扫描

  • 索引:索引书数据库优化方案中,成本最低,见效最快的方案
  • 预处理:数据主要有实时数据和历史数据
    • 实时数据,数据量小,所以查询效率不会有问题,
    • 而历史数据,数据量可能非常大,所以很容易出现查询效率问题,所以有了预处理,我们可以通过定时任务,在夜间对这部分数据进行查询存储 ,然后用的时候,直接操作结果的表就好。
  • mysql like
  • 增加缓存:可以使用redis进行缓存,将热数据拷贝到redis中,读写数据时,先到操作缓存数据。
    - 数据库优化
  • 分库分表分区
    • 分库:按照业务分库,分流数据库并发压力
    • 分表: 将大数据量的表分成较小的表,比如根据时间,每隔10天创建一个表,存储数据,以提高查询效率。
    • 分区:设定好分区规则之后,数据会自动插入到相应分区,查询时也可以很快的找到对映分区。分区不能提高并发性能。还是一张表,但数据却存在不同位置。
  • 数据库引擎
    • 数据库搜索引擎,mysql主要有两个,innodb和myisam
    • myisam的索引存储结构实在内存中,所以他的查询速率比innodb更高,但他是表级锁
    • innodb虽然搜索效率较低,但他是行级索,在修改同一表时更具有优势
  • 读写分离

案例:
delete或insert是 表级锁,如果操作的数据量太大的话,表可能会锁很长时间,导致后续操作阻塞(很多小但重要的查询不能及时返回),可能导致整个网站停止相应。
方法:可以加上limit 1000,每次只操作1000行。也可以每隔一段时间暂停一次,释放表让其他操作进来。
通过主从架构,主数据库负责写,从数据夫负责读。通过将主数据库数据同步到从数据库保证数据的一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值