Schema与数据类型优化】的更多相关文章

MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询.决定表的读取顺序,以及选择合适的索引等.用户可以通过特殊的关键字提示(hint)优化器,影响它的决策过程. 也可以请求优化器解释(explain)优化过程的各个因素,使用户可以知道服务器如何进行优化决策的,并提供一个参考基准,…
Schema与数据类型优化 选择优化的数据类型 1.更小的通常更好 更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存 2.简单就好 简单数据类型的操作通常需要更少的CPU周期.例如:整型比字符操作代价更低,因为字符集和校对规则使字符比较比整型比较更复杂 3.尽量避免NULL 通常情况下最好制定列为NOT NULL,除非真的需要存储NULL值. 如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引.索引统计和值比较都更复杂.可为NULL的列会使用更…
这是<高性能 MySQL(第三版)>第四章<Schema 与数据类型优化>的读书笔记. 1. 选择优化的数据类型 数据类型的选择原则: 越小越好:选择满足需求的最小类型.注意,增大数据类型的范围是耗时操作,尽量避免. 简单:整型比字符操作代价更低. 尽量避免 NULL 列:列最好指定为 NOT NULL,除非确实可以是 NULL.如果查询中包含可为 NULL 的列,会使索引.索引统计和值比较都更复杂.可为 NULL 的列占用更多存储空间,在 MySQL 里也需要特殊处理.如果可为…
一.数据类型优化 1.更小通常更好 应该尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期更少,但是要确保没有低估需要存储的值的范围,如果无法确认哪个数据类型,就选择认为不会超过范围的最小类型. 案例:设计两张表,设计不同的数据类型,查看表的容量 2.简单就好 简单数据类型的操作通常需要更少的CPU周期,例如, 1.整型比字符操作代价更低,因为字符集和校对规则是字符比较比整型比较更复杂 2.使用mysql自建类型而…
4.1 选择优化的数据类型   通用原则   更小的通常更好   前提是要确保没有低估需要存储的值范围:因为它占用更少的磁盘.内存.CPU缓存,并且处理时需要的CPU周期也更少.   简单就好   简单数据类型的操作需要更少的CPU周期.   尽量避免NULL   值可为NULL的列使得索引.索引统计和值比较都更复杂化.可为NULL的列会使用更多的存储空间.   整数类型   TINYINT SMALLINT MEDIUMINT INT BIGINT.分别使用8,16,24,32,64位存储空间…
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询数据来设计schema,这往往需要权衡各种因素. MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要. 更小的通常更好 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为它们占用更少的磁盘,内存和缓存.并且处理时需要的CPU周期也更少. 简单就好 简单数据类型的操作通常需要更少的CPU周期.(应该使用MySQL内建的类型而不是字符串来存储日期和时间,应该用整型来存储IP地址)…
1.数据类型 1.1.几个参考优化原则 a.  更小的通常更好 i.更小的数据类型,占用更少磁盘.内存和CPU缓存,需要的CPU周期更少 ii.如果无法确定哪个数据类型是最好的,就选择不会超过范围的最小类型 b.  简单就好 i.简单数据类型的操作仅需少量的CPU周期,EX:整形比字符操作代价更低 c.  尽量避免null i.null将使索引.索引统计和值比较更复杂. ii.可null的列需要更多空间 iii.在MyISAM引擎里甚至还可能导致固定大小的索引变成可变大小的索引 1.2.整数类型…
选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择: 更小的通常更好一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快.因为它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少.但是要确保没有低估需要存储的值的范围,因为在schema中的增加数据类型的范围是一个非常耗时和痛苦的操作.如果无法确定哪个数据类型是最好的,就选择不会超过范围的最小类型…
1.Schema schema,中文叫模式,是数据库的组织和结构 2.选择优化的数据类型 更小的通常更好:尽量使用可以正确存储数据的最小数据类型 简单就好:简单数据类型的操作通常需要更少的cpu周期.例如:整型比字符操作代价更低 尽量避免NULL:因为可为NULL的列使得索引.索引统计和值比较都更复杂,也会使用更多的存储空间 3.BLOB和TEXT BLOB和TEXT都是为存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储. BLOB和TEXT家族之间仅有的不同是BLOB类型存储…
Schema是什么鬼 schema就是数据库对象的集合,这个集合包含了各种对象如:表.视图.存储过程.索引等.为了区分不同的集合,就需要给不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的schema名等于用户名,并作为该用户缺省schema.所以schema集合看上去像用户名. 如果把database看作是一个仓库,仓库很多房间(schema),一个schema代表一个房间,table可以看作是每个房间中的储物柜,user是每个schema的主人,有操作数据库中每个房间的权利,就是…
1. 选择优化的数据类型 选择数据类型的原则 更小的通常更好:选择可以正确存储数据的最小数据类型 小的数据类型消耗更少的内存.CPU;占用更少的磁盘 选用简单的数据类型:简单的数据类型通常需要更少的CPU周期来处理 使用MySQL内建的类型来存储时间和日期 使用整型存储IP地址 尽量避免null值:通常情況下使用not null,除非真的需要存出null值 null值使得索引.索引統計.值比較都变得复杂 可为null的列需要更多的空间来存储 InnoBD使用单独的bit来存储null值 数字分为…
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素. 例如,反范式的设计可以加快某些类型的查询,但同时可能使另一些类型的查询变慢:添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高. 选择优化的数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要.基本原则为: 更小的通常更好:一般情况下尽量使用可以正确存储数据的最小数据类型,更小的数据类型通常更快,因为其占用更少的磁盘.内存和CP…
整数TinyInt,SmallInt,MediumInt,Int,BigInt 使用的存储8,16,24,32,64位存储空间.使用Unsigned表示不允许负数,可以使正数的上线提高一倍.实数 Float,Double , 支持近似的浮点运算. Decimal,用于存储精确的小数. 字符串 VarChar,存储变长的字符串.需要1或2个额外的字节记录字符串的长度. Char,定长,适合存储固定长度的字符串,如MD5值. Blob,Text 为了存储很大的数据而设计的.分别采用二进制和字符的方式…
总结作为开发人员重点注意的内容!这是一篇有关高性能MYSQL第四章schema相关的笔记. 0.前言 在项目中,数据库表列有两个text字段,用来存储大文本,在数据规模达到40万后,如果查询没命中索引,发现耗时会达到5s以上,在表中删除这两个大字段后,就算全表扫描,耗时也不过0.6s左右. 解决方案: 将这类不常参加查询的大字段放入详情表中,但对现有程序影响过大(懒). 查询字段统统加上索引. 1.选择合适的数据类型 选择合适的数据范围,能用 tinyint 不用 int. 字段越简单越好.存储…
1.数据类型 http://www.cnblogs.com/YDDMAX/p/4937770.html…
基本原则: 更小的通常更好:占用更少的磁盘 内存和cpu缓存.如varchar(2)和varchar(100). 简单就好:比如整形比字符型代价更低.使用日期型来存储日期而不是字符串.使用整形存储ip地址. 尽量避免null:如果可以 加上not null约束.因为可以null的列使索引,索引统计,值比较都变得复杂.通常把可为null的列改为not null带来的性能提升比较小,调优时没有必要首先修正这种情况来排查问题.但是如果计划在列上建立索引,如果可以保证是not null,那么尽量加上.…
4.5 加快ALTER TABLE 操作的速度 原理: MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题. MySQL 执行大部分修改表结构操作的方法是用新的结构创建一个空表,从旧表中查出所有数据插入新表,然后删除旧表.这样操作可能需要花费很长时间,如果内存不足而表又很大,而且还有很多索引的情况下尤其如此 特点: 大部分ALTER TABLE 操作将导致MySQL 服务中断 ALTER TABLE 本质是建新结构的表,从旧表插入数据到新表 (SHOW STATUS 显示这个语…
前言:      最近在看高性能 MySQL,记录写学习笔记:           高性能 MySQL 学习笔记(二) Schema与数据类型优化      笔记核心内容:MySQL 如何选择正确的数据类型,各数据类型的差异:        // 不要小看 MySQL 数据类型对性能的重要性,          当你的系统体量到达一定程度时,就知道这里的性能差异了.     一.选择优化的数据类型        // 更小的通常越好      尽量选择使用可以正确存储数据的最小数据类型.更小的数…
选择优化的数据类型: 1. 更小的通常更好: 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为他们占用更少的磁盘,内存和cpu缓存,并且处理时需要的cpu周期也更少. 2. 简单就好 简单的数据类型操作通常需要更少的cpu周期.例如,整型比字符操作代价更低,因为字符集和校对规则(排序规则)使字符比较比整型更加复杂.注:应使用mysql内建的类型存储时间和日期,而不是字符串. 3. 尽量避免null 如果查询中包含可为null的列,对Mysql来说更难优化,因为…
原文地址 1. 前言 对于数据库而言,在日常开发中我们主要的关注点有两块,一个是schema的结构设计,另一个就是索引的优化,这两块是影响我们最终系统结构和性能的关键部分,自然也是我们花费精力最多的部分: 本文主要介绍数据库设计中的一般原则和优化手段,包括数据库的一半范式.反范式设计.数据切分.数据路由与合并等等 2. Schema设计的一般性原则 2.1 概述 范式理论是关系型数据库设计的黄金法则,它提供了数据结构化的理论基础,有效地保证了数据的一致性,应该说,关系型数据库就是在范式的基础上才…
1.选择优化的数据类型的标准 1)更小的通常更好. 一般情况下,应该尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为他们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少. 2)简单就好 简单数据类型的操作通常需要更少的CPU周期 3)尽量避免NULL 许多表都包含可为NULL(空值)的列,记事应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性.通常情况下,最好制定列为NOT NULL,除非真的需要存储NULL. 2.基本的数据类型 1)…
选择优化的数据类型原则: 1. 更小的通常更好 尽量使用可以正确存储数据的最小数据类型.更小的数据类型通常更快,因为它们占用更少的磁盘.内存和CPU缓存,并且处理时需要的CPU周期也更少. 2. 简单就好 简单数据类型需要更少的CPU周期,比如整型比字符操作代价更低,因为字符集和排序规则使字符比较比整型比较更复杂.比如应该用MySQL内建的类型(date, time, datetime)来存储时间和日期,使用整型存储IP地址. 3. 尽量避免NULL 最好指定列为NOT NULL.因为可为NUL…
选择数据类型的原则: 1.更小通常更好.因为占用更少磁盘,内存和cpu缓存.但是要确保没有低估,因为进行alter时,是很耗时和头疼的操作.所以当无法确定数据类型的时候,选择不会超过范围的最小类型. 2.简单就好.简单的数据类型消耗的cpu更好,比如整型比字符串好 3.尽量避免使用null.主要是因为mysql的内部实现问题,但这种优化一般效益比较小. Decimal 的缺点: 1.占用内存多 2.计算消耗的cpu多 所以不到必须情况最好不要使用.一种优化方法是对decimal乘以一定的量级,然…
本篇是优化系列的第一篇:数据类型 为了不产生赘述,尽量用简洁的语言来描述. 在选择数据类型之前,首先要知道几个原则: 更小的通常更好 尽量使用可以正确存储数据的最小数据类型.更小的数据类型意味着更快,占用更少的磁盘,内存以及缓存,以及处理时间 简单就好 这是出于操作数据类型的效率和代价考虑.整型比字符型操作代价更低,因为字符集和校对规则是字符处理比整型更复杂 两个例子:使用Mysql内建的datatime而不是字符串存储时间,使用整型而不是IP字符串存IP地址 尽量避免NULL 这是个很烦人的值…
原文:http://bbs.landingbj.com/t-0-240002-1.html 在设计数据库的时候,整数类型的使用时不可避免的如ID,类型等. 在选择整数的同时主要是考虑是数据范围,如是否带符号,最大存储值. 一.有误符号 在无符号unsigned类型比有符号的整数多一倍. 如 tinyint 范围 -128~127 tinyint unsigned 范围 0~255 这里的tinyint unsigned比tinyint 最大数多一倍,其它的同理. 如果我们的范围 1-200,如果…
Schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素. 一:选择优化的数据类型 ①:更小的通常更好 整数类型:MySQL支持SQL标准整数类型 INTEGER(或INT)和 SMALLINT.作为一个可扩展标准,MySQL也支持整数类型 TINYINT,MEDIUMINT和 BIGINT.下表显示了每种整数类型所需的存储和范围. 表11.1 MySQL支持的整数类型所需的存储和范围     类型 存储(字节)…
前言 先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开. 1.0 基本概念简述 1.1 逻辑架构 第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层:服务器解析并优化sql,生成最终的执行计划并执行 第三层:存储引擎,负责数据的储存和提取 1.2 锁 数据库通过锁机制来解决并发场景-共享锁(读锁)和排他锁(写锁).读锁是不阻塞的,多个客户端可以在同一时刻读取同一个资源.写锁是排他的,并且会阻塞其他的读锁和写锁.简单提下乐观锁和悲观锁. 乐观锁,通常用于数据…
相信很多用了mysql很久的人,对这两个字段属性的概念还不是很清楚,一般会有以下疑问: 我字段类型是not null,为什么我可以插入空值 为毛not null的效率比null高 判断字段不为空的时候,到底要 select * from table where column <> '' 还是要用 select * from table where column is not null 呢. 带着上面几个疑问,我们来深入研究一下null 和 not null 到底有什么不一样. 首先,我们要搞清…
内容简介 <高性能mysql(第3版)>是mysql 领域的经典之作,拥有广泛的影响力.第3版更新了大量的内容,不但涵盖了最新mysql5.5版本的新特性,也讲述了关于固态盘.高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充.全书共分为16章和6 个附录,内容涵盖mysql 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制.备份和恢复,高可用与高可扩展性,以及云端的mysql和mysql相关工具等方面的内容.每一章都是相对独立的主题…
Java基础课程 Java基础课程内容涉及:Java开发介绍.Java数组.Java面向对象.常用基础类.集合.IO流.多线程.异常.网络.反射. 第一阶段:Java基础 1 第一部分:Java开发介绍 1. DOS常用命令 2. JVM.JRE.JDK之间的关系 3. Java开发环境的搭建:安装JDK,配置环境变量 4. Java入门程序(Java的开发流程) 5. Java的注释,标识符.标识符的命名规范 6. Java基本数据类型 7. 变量和常量的定义及初始化 8. Java的运算符…