MYSQL数据库设计的一些小技巧[整理] 有感

原创 2008年11月04日 20:05:00

选表类型:
mysql的myisam表适合读操作大,写操作少;表级锁表
innodb表正好相反;行级锁表
互联网服务,不算支付性的服务外,互动产品,新闻系统等等一般都是读多,写少。用myisam表比较合适。

表的设计
定长表:所有列的字段长度都是定长的。可以去查mysql的手册不定长字段是VARCHAR、BLOB或TEXT。int char都是定长的,定长表占用空间会大。
动态表:就是字段不是都定长的。
定长表要比动态表检索速度快。

软件系统的设计习惯是把每张表都分清很明确的功能,比如用户表都是用户信息,如果需要同时从留言表取数据,又从用户表取用户信息的时候,就会采用联合查 询,有的时候一些操作还会用left,join等各种复杂sql语句,没准还要用mysql的函数。如果是针对访问量,读取量很大的互联网服务时,同时并 发去读,数据量又大,很可怕。最好是如果数据不会修改,在常用的表上有冗余字段,能够做到一次读,把数据都拿到;可以有冗余的写操作,但减少复杂的查询操 作。

在设计表的时候要将这个表的所有字段类型占用的字节数求和,并乘以你的预期(如:存储100W数据量),就是整张表未来会占用容量。

拆表 拆库
拆表就是将一张表复制N多张,里面分别存放不用内容的数据,数据的存放是用HASH算法来决定放入哪张表。
例如用户表user,传统情况就是一张表,拆表就是将表复制为user_01,user_02等里面都存放了格式一样的不同用户数据。

拆库和拆表类似,就是库的复制。

拆表或拆库有很多的HASH算法,主要目的就是减少表的数据量,用算法保证每个表的数据量平均,请求,读写操作被分摊降低压力,而且安全,出了问题最多是一部分用户受影响。缺点就是检索不方便,需要另想办法。

很多网站为了前期省事都会采用discuz的产品,如bbs,blog等,网上有不少关于这个产品的介绍和优化方法,没细研究过,听过一些网站介绍他们的 优化方法时,对于数据库主要是采用主从的方法,将数据库的读写分离来提高性能,但是个人觉得这种办法在数据量到了规模的时候就OVER了,并发和读写操作 没提升,数据也是会逐渐累计超过限制。

互联网服务由于要应对大数据量,大请求量,所以在设计开发的时候就不要太学院派,不要力图达到数据库、程序的设计“优美”,性能是最要紧的。

 

也就是快慢表的拆分,如果这个用户是活动频繁用户,放块表;2,很长时间才登录,放慢表..

  细想WOW的登录检索,那叫个快啊..这方面值得研究.

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nirvana52/article/details/3220408

eclipse一些实用小技巧

IDE是我们最常用的工具之一。熟练运用好工具,能很大程度提到生产率。为此,本博主特意将一些遇到的实用的能极大提高生产率的小技巧记录如下。后续会不断补充更新。1.高亮匹配大括号对于c++代码或者java...
  • bitcarmanlee
  • bitcarmanlee
  • 2016-07-09 19:48:06
  • 965

MYSQL数据库设计的一些小技巧

选表类型:mysql的myisam表适合读操作大,写操作少;表级锁表innodb表正好相反;行级锁表互联网服务,不算支付性的服务外,互动产品,新闻系统等等一般都是读多,写少。用myisam表比较合适。...
  • m13666368773
  • m13666368773
  • 2012-09-20 16:04:09
  • 2880

java开发中的一些常用小技巧

  • 2012年02月17日 16:41
  • 34KB
  • 下载

【web前端】小技巧总结

1  HTML5多功能增加 HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。 (1)绘画 canvas; (2)...
  • qq_26858049
  • qq_26858049
  • 2017-06-27 09:55:00
  • 200

java的一些小技巧!

在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,异常情况随时都会发生,我们所需要做的就是...
  • u012402926
  • u012402926
  • 2016-07-15 22:06:04
  • 381

mysql使用小技巧

1、MySQL中有许多很实用的函数,好好利用它们可以省去很多时间:group_concat() 将取到的值用逗号连接,可以这么用:select group_concat(distinct id) fr...
  • lu_wei_wei
  • lu_wei_wei
  • 2016-05-03 10:34:45
  • 2670

在开发中总结的一点小技巧

在平时的开发中,我们总会遇到各种各样的问题,在我们技术还不行的时候,也许不是什么大问题,但是一旦技术逐渐成熟,所写的程序逐渐变大了,那么我们就会面临着越来越多的挑战。1、如何快速认识一个新类及其方法 ...
  • hangeqq685042
  • hangeqq685042
  • 2013-07-12 12:29:54
  • 2066

Intellij IDEA 使用小技巧

foreach循环 tab快速代码补全 iter Iterate (for each..in) itin Iterate (for..in) itli Iterate ov...
  • a478555
  • a478555
  • 2016-03-24 13:26:52
  • 248

在flash编程过程中的一些小技巧

本人已经学习AS3.0语言已经有两个月左右了,作为一个有点经验的小白在这里分享一些写代码或者考虑问题解决方法的一些小技巧。也当作是一种总结。        界面方面,输出信息很重要。我在这里考虑用的...
  • qq_27873263
  • qq_27873263
  • 2015-05-30 16:55:27
  • 301

HTML-Css使用的小技巧

水平居中设置水平居中设置-行内元素我们在实际工作中常会遇到需要设置水平居中的场景,比如为了美观,文章的标题一般都是水平居中显示的。这里我们又得分两种情况:行内元素 还是 块状元素 ,块状元素里面又分为...
  • qq_32938957
  • qq_32938957
  • 2018-04-14 20:23:41
  • 42
收藏助手
不良信息举报
您举报文章:MYSQL数据库设计的一些小技巧[整理] 有感
举报原因:
原因补充:

(最多只允许输入30个字)