数据库学习 - 大规模并发优化学习笔记

  • 大规模并发

    • 优化服务器配置
    • 使用负载均衡
    • 数据库结构设计
    • 中间件优化
    • 数据缓存使用
  • 数据库高并发
    • 数据库并发策略
  • 数据库设计建议
    • 表设计的具体问题
    • 查询优化
    • 注意事项
    • 算法优化

大规模并发

当网站有很多人访问的时候,并发量增大,这个时候我们所设计的网站就会遇到挑战。很多本来是没有问题的设计,这个时候可能就会暴露出问题了。

就像宏观物理定理不适合微观一样。

下面是一些优化的建议方法。

优化服务器配置

这个是在硬件上提升服务器,因为任何软件上的优化都是有瓶颈和极限的,所以提高服务器数量和配置是比较简单也很有效的解决办法。假如性能不是很好,那么就保证数量。最好再有一台作为冗余的来保障服务器的故障,提高鲁棒性。

使用负载均衡

这个词在现在很火,因为很多网站都在收集大量的数据,所以数据的并发量也很好。负载均衡是解决集中并发访问的核心技术,也是一种比较有效的方法。

主要设备就是负载均衡服务器,安装负载均衡软件,把大规模用户产生的高并发均衡分流到各个服务器上。

数据库结构设计

这部分内容也很多,一般都是对数据库结构,数据库语句进行优化。下面我会详细写一下数据库的优化方法。

中间件优化

这部分我接触不多,当时也没好好学。

如Apache, IIS, Tomact, WebLogin 这些都是中间件。

数据缓存使用

缓存是把数据库的常用数据用Cache缓存起来,减少服务器重新请求的压力。提高速度。

数据库高并发

数据库高并发的情况,要先找一下瓶颈所在。CPU还是IO还是网络。

所以我们可以有下面的一些解决方案:

  • 提高网络带宽
  • 高性能的数据库服务器和Web服务器
  • 优化分页存取数据
  • 稳定高性能的数据库访问层
  • 优化数据库缓存,多用内存缓存的方式来处理数据
  • 数据库的索引优化
  • 对事务处理的设计要严谨
  • 记录完成的操作日志,容易定位错误。
  • 增加负载均衡服务器
  • 优化前端代码
  • 考虑用压缩方式传输HTML和Javascript代码。

数据库并发策略

  1. 最后结果生效。 让用户最后修改的结果生效,减少操作次数。
  2. 开放式并发。 当冲突只是偶尔发生,出现冲突的时候告知用户。
  3. 保守式并发。冲突经常发生的情况,又不能随便让冲突发生,重新操作,那么就在用户对表的记录编辑的时候加锁,不让其他人来编辑。
  4. 版本号方法。 当读取记录的时候,设立日期时间戳或版本号,当更新记录的时候,进行匹配。(为了确保准确性应该在表上设置触发器)。

数据库设计建议

这里写下我平时学的还有书上的一些知识,关于数据库的一些设计简易。

1. 多表设计。

2. 不要用自增属性作为主键与子表进行关联,不便于系统迁移和恢复。

表设计的具体问题

  1. 数据行的长度不要超过8020个字节,如果超过的话,物理页就会占用两行,从而造成存储碎片。降低查询效率。
  2. 能够用数字的字段,尽量不用字符类型,因为字符串匹配更耗时。

查询优化

  1. 实现功能的基础上减少数据库访问次数。
  2. 通过参数尽量减少访问行数,减轻网络负担。
  3. 查询SQL的时候,尽量把索引放在首列。
  4. 算法结构尽量简单。
  5. 见谅不要用select * from table. 不要用 * 。
  6. 多使用MySQL查询优化器

放弃索引会进行全表扫描的操作

  • 对NULL值进行判断。( 默认值为0会改善 )
  • 用!= 或者 <> 操作符
  • 用or链接

注意事项

  1. 慎用in 和 not in
  2. 避免在索引字符中使用非打头字幕搜索。(无法用索引加速)
  3. 可以用强制查询优化器来使用某个索引加速
  4. 尽量避免在where子句中对字段使用函数操作。
  5. 不要在where子句的=左边进行表达式操作。
  6. 可以的话用exist.
  7. 尽量避免大的实务操作。可以提高并发能力。
  8. 充分利用连接条件。
  9. 利用视图加速查询
  10. 利用Distinct 取代 group by
  11. union all取代 union

算法优化

尽量避免使用游标,基于集的方法可能更有效。

建立高效的索引。

大型数据库一般有两种索引:簇索引和非簇索引。

没有簇索引的表是按照堆结构存储的。所数据添加在表的尾部。

一个表只有一个簇索引,数据在物理上是按照簇索引的顺序存储的(B树结构)。提高查询速度。会降低插入更新删除操作的性能。

大致如上。学习笔记。

时间: 2024-08-07 16:59:40

数据库学习 - 大规模并发优化学习笔记的相关文章

Web应用程序性能优化学习笔记

Web应用程序性能优化学习笔记 1. 使用瀑布图初步诊断网站性能瓶颈 一般来说,打开一个网页的速度会受到以下几项的影响: 1) 服务器花了太长的时间将.aspx页面的内容转化为html. 2) .aspx页面花了太长的时间从服务器端将内容发送到客户端. 3) 页面上的图片或者flash文件花了太长的时间从服务器端发送到客户端. 4) JavaScript和CSS文件阻塞页面渲染. 我们可以使用“瀑布图”来确定一个页面的性能问题是由于哪一项造成的.FireBug.Chrome自带的“开发人员工具”

Java并发编程学习笔记

Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现Runnable接口并编写run方法,使得该任务可以执行你的命令.   class MyTask implements Runnable {    private String mName;     public MyTask(String name) {    mName = name;   }  

Java并发编程学习笔记(一)线程安全性 1

什么是线程安全性: 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问."共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值在其生命周期内可以发生变化. 一个对象是否需要线程安全的,取决于他是否被多个线程访问.这指的是在程序中访问对象的方式,而不是对象要实现的功能.要使得对象时线程安全的,需要采用同步机制来协同对对象可变状态的访问.如果无法实现协同,那么可能导致数据破坏以及其他不该出现的结果. 如果当多个线程访

数据库学习网站和linux学习网站

Oracle ITPub论坛 http://www.itpub.net 著名IT技术论坛.尤以数据库技术闻名. ITPUB论坛的前身应该是建立在 smiling 的 oracle小组,他们搬家前的主页应该是在下面的这个地址吧! http://oracle.myrice.com/ CNOUG论坛 http://www.cnoug.org/ oracle中国用户组,高手云集,讨论Oracle数据库安装.管理.备份.恢复.性能优化: Oracle数据库高级技术HA.VLDB.ORACLE INTERN

网站大规模并发访问的优化建议

一.服务器配置优化 我们需要根据应用服务器的性能和并发访问量的大小来规划应用服务器的数量.有一个使用原则是:单台应用服务器的性能不一定要求最好,但是数量一定要足够, 最好能有一定的冗余来保障服务器故障.特别是,在高并发访问峰期间,适当增加某些关键应用的服务器数量.比如在某些高峰查询业务上,可以使用多台服务器, 以满足用户每小时上百万次的点击量. 二.使用负载均衡技术 负载均衡技术是解决集中并发访问的核心技术,也是一种较为有效的解决网站大规模并发访问的方法.实现负载均衡技术的主要设备是负载均衡器服

MyBatis学习总结(三)——优化MyBatis配置文件中的配置(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(三)--优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org

【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

[转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//E

(转载)应对网站大规模并发访问的优化建议

再过半个月就2013年的春运就要来临,每年外地打工的人们都会因为订票而烦恼.特别是网上订票,对12306提供给的网上订票系统会有各种看法,从去年的年春节,铁道部推出12306网站,实行网络实名购票,每一个返乡人原以为能买着一张回家的火车票,但结果还是大失所望.在去年,7天内,12306网站访问用户已占全球互联网用户的0.902%,每天点击量高达10亿人次,系统一度支撑不住如此庞大的访问量而陷入崩溃.12306网站的点击量属于千万PV级别,如果要满足实际的要求,那么需要能够应对网站大规模的并发访问

如何学习Linux性能优化?

如何学习Linux性能优化? 你是否也曾跟我一样,看了很多书.学了很多 Linux 性能工具,但在面对 Linux 性能问题时,还是束手无策?实际上,性能分析和优化始终是大多数软件工程师的一个痛点.但是,面对难题,我们真的就无解了吗? 固然,性能问题的复杂性增加了学习难度,但这并不能成为我们进阶路上的"拦路虎".在我看来,大多数人对性能问题"投降",原因可能只有两个. 一个是你没找到有效的方法学原理,一听到"系统"."底层"这