随笔分类 - 数据库
摘要:在老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从 MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。当使用共享表空间存储方式的时候,Innodb的
阅读全文
摘要:1、复制进程Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave)。实现整个复制操作主要由三个进程完成的,其中两个进程在Slave(Sql进程和IO进程),另外一个进程在 Master(IO进程)上。要实施复制,首先必须打开Master端的binary log(bin-log)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全顺序的执行日志中所记录的各种操作。复制的基本过程如下:1)、Slave上面的IO进程连接上Master
阅读全文
摘要:最近经常有人问我 MySQL Query Cache 相关的问题,就整理一点 MySQL Query Cache 的内容,以供参考。顾名思义,MySQL Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 MySQL 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。在大部分的 MySQL 分发版本中,Query Cache 功能默认都是打开的,我们可以通过调整 MySQL Server 的参数选项打开该功能。主要由以下5个参数
阅读全文
摘要:1.命名约定 命名应该使用富有含义的英文词汇,要避免使用缩写,多个单词组成的,中间下划线分隔 除数据库名称长度为1-8个字符,其余为1-30个字符 命名只能使用英文字母,数字和下划线 避免使用Oracle的保留字如level,关键字如type 各表之间相关列名尽量同名 数据库的命名:网上数据库命名为OLPS(Online Process System)+站点名的2-4个字符,后台数据库命名为"BOPS"+站点名的2-4个字符 INDEX命名:table_name+column_name+ind,各个部分以下划线分隔,多单词组成的column name,取前几个单词首字母,加
阅读全文
摘要:设计表时mysql的表主键设置为自增长类型,然后就在ibatis中配置了以下的sql语句(这个表有个名字为id的自增长主键id)<!-- 创建用户信息 --><insert id="createUser" parameterClass="userAlias"><!--[CDATA[ insert into user (name, password, email, status, gmt_create, gmt_modified) ...
阅读全文
摘要:以下几条经验是我在几年工作中总结出来的,而且现在工作中一直在使用的原则1.减少关联查询的表数量,控制在3个以内2.表设计时能冗余就冗余,数据的一致性靠业务逻辑去控制3.忘掉外键,不要依靠底层db给你检查数据的不一致,同上(忘掉书本里的那些概念吧,听起来有些叛逆~)4.查询语句中尽量不用in,not,left join,right join5.数据库字段设计尽量设计成非空的,便于作索引6.对于查询条件用到的字段,对其作索引7.查询条件中,尽量避免用like,尽量使用等值查询8.为每个表设置一个默认主键,即使它没有任何用处9.为每个表设置一个gmt_create,gmt_modified字段,表示
阅读全文