mysql 数据库设计

 更新时间:2009年06月14日 14:42:14   作者:  
大家都知道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了,并发和读写操作 没提升,数据也是会逐渐累计超过限制。

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

相关文章

  • mysql建表报错:invalid default value for 'date'的解决方法

    mysql建表报错:invalid default value for 'date'的解决方

    最近遇到一个这样的问题,出现了invalid default value for 'end_date'错误,所以下面这篇文章主要给大家介绍了关于mysql建表报错:invalid default value for 'date'的解决方法,需要的朋友可以参考下
    2022-12-12
  • 数据库中间件MyCat的介绍

    数据库中间件MyCat的介绍

    今天小编就为大家分享一篇关于数据库中间件MyCat的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • MySQL数据库常用操作和技巧(DBA必备知识)

    MySQL数据库常用操作和技巧(DBA必备知识)

    MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老MySQL DBA总结了MySQL数据库最常见和最常使用的一些经验和技巧,与分享大家!
    2011-03-03
  • 怎么重置mysql的自增列AUTO_INCREMENT初时值

    怎么重置mysql的自增列AUTO_INCREMENT初时值

    怎么重置mysql的自增列想必有很多的朋友都不会吧,下面与大家分享下常用的几种方法,不懂的朋友可以了解下哈,希望对大家有所帮助
    2013-06-06
  • Mysql提权的多种姿势汇总

    Mysql提权的多种姿势汇总

    这篇文章主要给大家介绍了关于Mysql提权的多种姿势,姿势包括写入Webshell、UDF提权以及MOF提权,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • 数据库mysql的四种安装方式(非常全面!)

    数据库mysql的四种安装方式(非常全面!)

    这篇文章主要给大家介绍了关于数据库mysql的四种安装方式,文中通过图文以及代码介绍的非常详细,不论你是初学者还是有经验的开发者,都希望你能从这个教程中收获知识与乐趣,需要的朋友可以参考下
    2024-02-02
  • MySql如何去除字符串前缀,两边,后缀

    MySql如何去除字符串前缀,两边,后缀

    这篇文章主要介绍了MySql如何去除字符串前缀,两边,后缀,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Mysql ALTER TABLE加字段的时候到底锁不锁表

    Mysql ALTER TABLE加字段的时候到底锁不锁表

    本文主要介绍了Mysql ALTER TABLE加字段的时候到底锁不锁表,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • MySQL数据库优化经验详谈(服务器普通配置)

    MySQL数据库优化经验详谈(服务器普通配置)

    同时在线访问量继续增大 对于1G内存的服务器明显感觉到吃力严重时甚至每天都会死机 或者时不时的服务器卡一下 这个问题曾经困扰了我半个多月MySQL使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。
    2011-03-03
  • MySQL的mysqldump工具用法详解

    MySQL的mysqldump工具用法详解

    这篇文章主要介绍了MySQL的mysqldump工具用法详解,同时附带了相关Source命令的用法,详解需要的朋友可以参考下
    2015-07-07

最新评论