mysql数据库设计的一些小知识
mysql数据库设计的一些小知识
以下的文章主要是对MySQL数据库的一些基础知识的简单介绍,随着MySQL数据库的广泛应用,其相关的知识也随着受到重视,以下的文章对比较适合于MySQL的初学者,以下就是文章的主要内容。
1、拆表 拆库
拆表即是将一张表仿制N多张,里边分别寄存不必内容的数据,数据的寄存是用HASH算法来决议放入哪张表。
例如用户表user,传统情况即是一张表,拆表即是将表仿制为user_01,user_02等里边都寄存了格局相同的不一样用户数据。
拆库和拆表相似,即是库的仿制。 拆表或拆库有许多的HASH算法,首要意图即是削减表的数据量,用算法确保每个表的数据量均匀,恳求,读写操作被分摊下降压力,并且安全,出了疑问最多是一部分用户受影响。缺陷即是检索不方便,需求另想方法。
许多网站为了前期省劲都会选用discuz的商品,如bbs,blog等,网上有不少关于这个商品的介绍和优化方法,没细研讨过,听过一些网站介绍他们的 优化方法时,关于数据库首要是选用主从的方法,将数据库的读写别离来进步性能,可是自己觉得这种方法在数据量到了设计的时候就OVER了,并发和读写操作 没提高,数据也是会逐步累计超越限制。
2、SQL兼容性
MySQL包含一些与sql数据库设计标准不同的转变,他们的大多数被设计成是对SQL语言脚本语言的不足的一种补偿。然而,另一些扩展确实使 MySQL与众不同,例如,LINK子句搜索是自动地忽略大小写的。MySQL 也允许用户自定义的SQL函数
3、SQL优化
为了查询出一个业务目标,也许有很多种查询方法,但是最优的只有一种。对于网站业务而言,特别是核心业务和大消耗业务而言,SQL的优化更是一个重要的事情。目前能想到的有参数化、预编译、考虑关联表的大小、考虑条件对索引的使用、考虑物理存储方式。有时间的话,我会专门写一下这个专题。
4、表的设计
定长表:所有列的字段长度都是定长的。可以去查mysql的手册不定长字段是VARCHAR、BLOB或TEXT。int c har都是定长的,定长表占用空间会大。动态表:就是字段不是都定长的。定长表要比动态表检索速度快。
软件系统的数据库设计习惯是把每张表都辨明很清晰的功用,比方用户表都是用户信息,假如需要同时从留言表取数据,又从用户表取用户信息的时分,就会选用联合查 询,有的时分一些操作还会用left,join等各种杂乱sql句子,没准还要用mysql的函数。假如是对于访问量,读取量很大的互联网效劳时,一起并 发去读,数据量又大,很可怕。最佳是假如数据不会修正,在常用的表上有冗余字段,能够做到一次读,把数据都拿到;能够有冗余的写操作,但减少杂乱的查询操 作。
以下的文章主要是对MySQL数据库的一些基础知识的简单介绍,随着MySQL数据库的广泛应用,其相关的知识也随着受到重视,以下的文章对比较适合于MySQL的初学者,以下就是文章的主要内容。
1、拆表 拆库
拆表即是将一张表仿制N多张,里边分别寄存不必内容的数据,数据的寄存是用HASH算法来决议放入哪张表。
例如用户表user,传统情况即是一张表,拆表即是将表仿制为user_01,user_02等里边都寄存了格局相同的不一样用户数据。
拆库和拆表相似,即是库的仿制。 拆表或拆库有许多的HASH算法,首要意图即是削减表的数据量,用算法确保每个表的数据量均匀,恳求,读写操作被分摊下降压力,并且安全,出了疑问最多是一部分用户受影响。缺陷即是检索不方便,需求另想方法。
许多网站为了前期省劲都会选用discuz的商品,如bbs,blog等,网上有不少关于这个商品的介绍和优化方法,没细研讨过,听过一些网站介绍他们的 优化方法时,关于数据库首要是选用主从的方法,将数据库的读写别离来进步性能,可是自己觉得这种方法在数据量到了设计的时候就OVER了,并发和读写操作 没提高,数据也是会逐步累计超越限制。
2、SQL兼容性
MySQL包含一些与sql数据库设计标准不同的转变,他们的大多数被设计成是对SQL语言脚本语言的不足的一种补偿。然而,另一些扩展确实使 MySQL与众不同,例如,LINK子句搜索是自动地忽略大小写的。MySQL 也允许用户自定义的SQL函数
3、SQL优化
为了查询出一个业务目标,也许有很多种查询方法,但是最优的只有一种。对于网站业务而言,特别是核心业务和大消耗业务而言,SQL的优化更是一个重要的事情。目前能想到的有参数化、预编译、考虑关联表的大小、考虑条件对索引的使用、考虑物理存储方式。有时间的话,我会专门写一下这个专题。
4、表的设计
定长表:所有列的字段长度都是定长的。可以去查mysql的手册不定长字段是VARCHAR、BLOB或TEXT。int c har都是定长的,定长表占用空间会大。动态表:就是字段不是都定长的。定长表要比动态表检索速度快。
软件系统的数据库设计习惯是把每张表都辨明很清晰的功用,比方用户表都是用户信息,假如需要同时从留言表取数据,又从用户表取用户信息的时分,就会选用联合查 询,有的时分一些操作还会用left,join等各种杂乱sql句子,没准还要用mysql的函数。假如是对于访问量,读取量很大的互联网效劳时,一起并 发去读,数据量又大,很可怕。最佳是假如数据不会修正,在常用的表上有冗余字段,能够做到一次读,把数据都拿到;能够有冗余的写操作,但减少杂乱的查询操 作。