mysql数据库设计
单表一亿?还是全库1亿?
1.首先可以考虑业务层面优化,即垂直分表。
垂直分表就是把一个数据量很大的表,可以按某个字段的属性或使用频繁程度分类,拆分为多个表。
如有多种业务类型,每种业务类型入不同的表,table1,table2,table3.
如果日常业务不需要使用所有数据,可以按时间分表,比如说月表。每个表只存一个月记录。
2.架构上的优化,即水平分表。
水平分表就是根据一列或多列数据的值把数据行放到多个独立的表里,这里不具备业务意义。
如按照id分表,末尾是0-9的数据分别插入到10个表里面。
可能你要问,这样看起来和刚才说的垂直分表没什么区别。只不过是否具备业务意义的差异,都是按字段的值来分表。
实际上,水平分表现在最流行的实现方式,是通过水平分库来实现的。即刚才所说的10个表,分布在10个mysql数据库上。这样可以通过多个低配置主机整合起来,实现高性能。
最常见的解决方案是cobar,这个帖子介绍的比较完善,可以看看。
http://blog.csdn.net/shagoo/article/details/8191346
cobar的逻辑层次图:
不过这种分库方式也是有一定局限性的,需要应用程序做相应的配合,比如说分库的情况下,虽然可以实现跨库查询,但是不能进行相关的group by计算。
另外,之前关于水平分表的实现方式,也可以通过表分区来实现。
mysql优化的方式有很多,选择上主要还是要考虑个人的实际情况,如代码不可控的情况下,就不适合选择按字段属性分表的情况,这样可能会带来大量的重构以及很多不可预期的风险。
而架构的优化,虽然对应用是透明的,但对sql的写法有很多局限性,比如说不能使用聚合函数等等,同时也需要有充足的硬件资源,只有一台服务器的情况下是没有意义的。
相比起来,代价最低的是按时间分表或分区,这两种办法对应用来说都是透明的。
分区只需要一次本地数据迁移的操作。
而通过分表把现网数据和历史数据分离,唯一的代价是定期的数据维护。
一般如果表里面有1亿数据的情况下,索引的问题应该是常识了,这方面我就不说了。
2. MySQL数据库表设计,需要建几个表,包括哪些字段
简单点: 用户表(用户ID,姓名,密码,性别,年龄,职业,微信,邮箱,手机,专长,用户状态,登录时间,是否管理员)其中也可以单独设置一个管理员表
试题类别:(类别 ID,类别名称,类别描述)
试题表:(试题 ID,试题类别 ID,试题描述,试题难度,试题答案)
答题表:(答题 ID,用户 ID,试题 ID,答题答案,答题评分)
大概就这样
3. MYSQL数据库设计
用户对应一个评论表
建立一个分类表:里边含音乐、咨询、等分别赋予ID。比如音乐为1,咨询为2
所有的评论都写在同一个表中
类型 评论id 评论内容 评论时间 ……
1 张三 哈哈 yyyy-mm-dd
2 李四 怎么下载 yyyy-mm-dd
也就是说靠类型来区分评论的是哪个表。比如类型是1的就是评论音乐,类型是2的就是咨询。
有问题追问吧。
4. Mysql数据库设计
简单用户表 tb_user:
userid , username
用户详细信息表 tb_userinfo
userid , email , homepage , phone , address
把用户信息分开的目的就是保证经常查询的数据在一张表,其它信息放到另一张表
论坛主题表 tb_bbs
bbsid , userid , title , ip , repleycount , replyuserid , createtime , lastreplytime
论坛内容标 tb_bbs_content (此表可按照bbsid进行分表存储)
bbsid , content;
论坛回复表 tb_bbs_reply (此表可按照bbsid进行分表存储)
replyid , bbsid , userid , content , replytime , ip
5. 有没有好用的mysql数据库设计工具
下面推荐两款:
一、Navcat:
Navicat 是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。
Navicat是闻名世界、广受全球各大企业、政府机构、教育机构所信赖,更是各界从业员每天必备的工作伙伴。自2001 年以来,Navicat 已在全球被下载超过 2,000,000 次,并且已有超过 70,000 个用户的客户群。《财富》世界 500 强中有超过 100 家公司也都正在使用 Navicat。
二、MySQL Workbench:
MySQL Workbench是一款图形化的数据库设计工具,它在一个开发环境中集成了SQL的开发,管理,数据库设计,创建以及维护。它是 fabFORCE.net旗下DBDesigner 4的继承者,并替代了MySQL GUI Tools Bundle。当前版本是5.2,最早版本是5.0,这是为了强调MySQL Workbench是作为DBDesigner4的继承者被开发出来的事实。
6. MYSQL数据库的物理设计都包括哪些内容,怎么设计
Log File物理结构
log block结构分为日志头段、日志记录、日志尾部
Block Header,占用12字节
Data部分
Block tailer,占用4字节
Block Header
这个部分是每个Block的头部,主要记录的块的信息
Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节
Block data len,表示该block中有多少字节已经被使用了,占用2字节
First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节
Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节
7. Mysql或者sql,小说数据库,储存设计
文本文件不推荐存储在数据库中,应该单独放在某个磁盘目录下面,然后再数据库中,记录文件的存放目录。
8. mysql数据库里面表的设计
建一个字段就可以了
存入的时候用一个特殊的标点符号隔开
现在大部分的网站都是这么做的,你可以看看起点,迅雷
他们要求输入标签的时候就是让你直接输入一个字符串,然后用逗号隔开
到时候你读的时候也截取下字符串来读
这样就可以了
截取字符串可以在数据库里做,这样比较快
最好就是做成存储过程,到时候调用一下就可以了,方便的很
9. 根据如下表格内容如何设计数据库表(Mysql)
1、职责信息表、包含表述信息
2、工作任务表
3、职责和任务关联中间表
这样就做到了职责表1对多个工作表,后面不管怎么加都是一个套路