大数据量的数据库表设计技巧
来源:互联网 发布:我爱mac网站怎么样 编辑:程序博客网 时间:2024/05/04 22:39
技巧1:尽量不要使用代码。比如性别这个字段常见的做法:1代表男,0代表女。这样的做法意味着每一次查询都需要关联代码表。
技巧2:历史数据中所有字段与业务表不要有依赖关系。如保存打印发票的时候,不要只保留单位代码,而应当把单位名称也保存下来。
技巧3:使用中间表。比如职工工资,可以把每一位职工工资的合计保存在一张中间表中,当职工某一工资项目发生变化的时候,同时对中间表的数据做相应更新。
技巧4:使用统计表。需要经常使用的统计数据,生成之后可以用专门的表来保存。
技巧5:分批保存历史数据。历史数据可以分段保存,比如2003年的历史数据保存在 《2003表名》中,而2004年的历史数据则保存在《2004表名》中。
技巧6:把不常用的数据从业务表中移到历史表。比如职工档案表,当某一职工离开公司以后,应该把他的职工档案表中的信息移动到《离职职工档案表》中。
1、经常查询的和不常用的分开几个表,也就是横向切分
2、把不同类型的分成几个表,纵向切分
3、常用联接的建索引
4、服务器放几个硬盘,把数据、日志、索引分盘存放,这样可以提高IO吞吐率
5、用优化器,优化你的查询
6、考虑冗余,这样可以减少连接
7、可以考虑建立统计表,就是实时生成总计表,这样可以避免每次查询都统计一次
8、用极量数据测试一下数据
速度,影响它的因数太多了,且数据量越大越明显。
1、存储将硬盘分成NTFS格式,NTFS比FAT32快,并看你的数据文件大小,1G以上你可以采用多数据库文件,这样可以将存取负载分散到多个物理硬盘或磁盘阵列上。
2、tempdbtempdb也应该被单独的物理硬盘或磁盘阵列上,建议放在RAID0上,这样它的性能最高,不要对它设置最大值让它自动增长
3、日志文件日志文件也应该和数据文件分开在不同的理硬盘或磁盘阵列上,这样也可以提高硬盘I/O性能。
4、分区视图就是将你的数据水平分割在集群服务器上,它适合大规模OLTP,SQL群集上,如果你数据库不是访问特别大不建议使用。
5、簇索引你的表一定有个簇索引,在使用簇索引查询的时候,区块查询是最快的,如用between,应为他是物理连续的,你应该尽量减少对它的updaet,应为这可以使它物理不连续。
6、非簇索引非簇索引与物理顺序无关,设计它时必须有高度的可选择性,可以提高查询速度,但对表update的时候这些非簇索引会影响速度,且占用空间大,如果你愿意用空间和修改时间换取速度可以考虑。
7、索引视图如果在视图上建立索引,那视图的结果集就会被存储起来,对与特定的查询性能可以提高很多,但同样对update语句时它也会严重减低性能,一般用在数据相对稳定的数据仓库中。
8、维护索引你在将索引建好后,定期维护是很重要的,用dbccshowcontig来观察页密度、扫描密度等等,及时用dbccindexdefrag来整理表或视图的索引,在必要的时候用dbccdbreindex来重建索引可以受到良好的效果。
不论你是用几个表1、2、3点都可以提高一定的性能,5、6、8点你是必须做的,至于4、7点看你的需求,我个人是不建议的。
- 大数据量的数据库表设计技巧
- 大数据量的数据库设计
- 大数据量的数据库设计
- 关于大数据量的数据库设计问题
- 大数据量的系统的数据库结构如何设计?
- 大数据量的系统的数据库结构如何设计?
- 大数据量的系统的数据库结构如何设计?
- 高并发大数据量的数据库的设计与优化
- 大数据量的系统的数据库结构如何设计
- 大数据量的系统的数据库结构如何设计?
- 大数据量高并发访问数据库结构的设计
- 数据库大数据量的操作
- 数据库大数据量的处理
- 做好数据库设计从容应对大数据量
- 大数据量数据库设计与优化方案
- 大数据量查询的优化技巧
- 大数据量文件的上传下载技巧
- 大数据量的数据库表如何存放ID
- 使用java JDBC方式操作oracle blob类型数据
- 给定平面上的圆(圆心坐标和半径长度)和一个正方形(四个点的坐标)判断两者是否有交点。
- 关于C++虚函数和纯虚函数
- java.util.Date和java.sql.Date的区别和应用
- CoreGraphics入门
- 大数据量的数据库表设计技巧
- Lua基础 语句
- HTTP协议之代理
- MFC控件Edit Control
- SQL的like参数的设置
- SharePoint 2010中的单点登录
- 基于索引的SQL语句优化之降龙十八掌
- Hibernate与iBATIS的比较
- XML xmlns xsi解释