`
zizipo
  • 浏览: 22616 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

高性能mysql读书笔记三

阅读更多
架构优化和索引
  1.数据类型
  浮点:FLOAT和DOUBLE使用的是平台的浮点数,分别占用4字节和8字节。DECIMAL是表示精确的小数。
  字符串:VARCHAR(255)表示最大长度255字节,对于uft-8编码,将不知道能保留多少字符,中文是3字节,字母1字节,这一点要注意。另外设高上限,因为内存的分配mysql是固定长度的,这样可能会导致内存的浪费。另外会占用额外的1或2字节来记录长度。该类型的问题是修改字段会改变行的大小,可能引起分页。带来额外的工作。但这个问题不是很大,因为预写式日志的存在。CHAR优势比较小了,对于固定长度的,倒是可以用一下,问题是会丢失字符串后面的空格。
  时间:DATETIME其实是封装为YYYYMMDDHHMMSS的整数,8字节,相当与bigint,精确到秒
  TIMESTAMP:从1970年1月1日到现在的秒数,占用4字节
  BIT和SET,都是位集,要使用的时候研究一下跟使用INT有什么区别。
  IP地址用无符号整数保存,mysql提供了INET_ATION()和INET_NTOA()实现转化,我这个项目刚好能用上。
  2.索引
  大部分存储引擎都是用B-Tree(一个节点很多分支,深度一样,为低速IO和按序查找而优化的)来实现。可以匹配全名,匹配最左前缀(找到第一层小于前缀的风格点和第一个大于前缀的风格点,递归)匹配范围值(找到第一层最大小于下届的和最小大于上界的,递归),like也可以看成一个范围值。比如 like ("123%" > "123" and <"124"). 这三种情况可以变成两种。可以组合比如,Key(a,b,c),索引中也是按顺序存储的, a='A'and b like 'B%',相当于abc like "AB%"可以索引 a='A' and b>"B1" and B<"B2" 相当于abc >"AB1" abc<"AB2"
like也可以看成一个范围值。对于多列索引,顺序很重要,如果前一列使用了范围条件,后一列的索引就不能使用了,因为mysql不知道这个范围里包括了多少值,无法组合出索引,所以这个时候In就特别有用,它可以是mysql知道如何组合条件使用索引。
如何select * form employee where gender>=0 and gender <=1 and birthday="1987-08-19",该表上有索引key(gender,birthday),这种写法会扫描全表,
而select * form employee where gender in (0,1) and birthday="1987-08-19"就会使用索引。这个其实优化器还可能优化,而如果gender是字符串,就无从优化了。
  Hash索引不能处理范围检索。可以用索引一个保存hash值的列来优化索引的性能。
  全文索引:通过分词,建立一个类似B-Tree的结构。
  3.索引优化:
  (1).有索引的列要单独出现在表达式的一边,这是最简单的,第二,表达式也最好不要有其他的变量,比如CURRENT_DATE,这个会影响缓存。(这个也许新的版本能优化)
  (2).前缀索引,把字符串的前面一部分用做索引,Text字段会很需要,要关注选择性和平均性两个指标,语法alert table table_name add key (column_name(N)).


 
分享到:
评论

相关推荐

    高性能MySQL 第三版读书笔记 一至六

    高性能MySQL(一)优化服务器设置 高性能MySQL(二)操作系统和硬件优化 高性能MySQL(三)复制 高性能MySQL(四)可扩展的MySQL 高性能MySQL(五)MySQL分支与变种 高性能MySQL(六)高可用性

    mysql高性能索引读书笔记

    《高性能Mysql》第五章的读书笔记,记录的都是要点,以思维导图的方式呈现。

    《高性能MySQL》读书笔记.docx

    索引能够轻易将查询性能提高几个数量级,创建一个最优的索引经常需要重写查询。索引可以包含一个或多个列的值,如果索引包含多个列,那么列的顺序也十分重要,因为MySQL只能高效地使用索引的最左前缀。创建一个包含...

    高性能Mysql.xmind

    读书笔记,自己写的,方便以后网络查看。知识共享 11

    高性能MYSQL1

    高性能MySQL读书笔记MySQL概述于架构 1.1MySQL最重要、最与众不同的特性是它的存储引擎架构1.2。

    lampbrother mysql高级教程笔记 超详细

    记录了以下五大部分 一、grant用户授权 二、开启mysql bin-log日志 三、mysql主从复制 四、mysql分区技术,仅中mysql5.1之后的版本中支持。 五、mysql性能优化

    高性能MySQL读书笔记 找出谁持有锁

    周末重读了一遍《高性能MySQL》,发现有些知识点看过便忘了,没有实际动手操作一遍就是记不牢,所以今天动手操作了一下“找出谁持有锁”,并把实验步骤记录下来,有兴趣的网友可以参照一二。

    精品Mysql学习资源分享出来.zip

    本文档可以看作是 D瓜哥 学习《高性能MySQL》时,做的读书笔记。为了让内容更丰富易懂,还参考了《MySQL技术内幕》和《数据库索引设计与优化》。 本文档暂时只关注开发人员眼中的 MySQL。所以,内容暂时只覆盖...

    MySQL数据库入门到高级笔记快速学习pdf版本

    阅读建议:无论你是MySQL数据的初学者,还是已经学习了MySQL,这本pdf都适合,新手用来学习,大佬用来查漏补缺,如果需要可以去阅读MySQL专栏的三篇学会MySQL系列,如果觉得写的不错,原创不易,多多支持呀

    High-Performance-MySQL

    High-Performance-MySQL 《高性能MySQL》读书笔记

    浅析MySQL 备份与恢复

    本文为《高性能MySQL》备份相关章节的读书笔记。 2、备份和恢复的简单定义 正如简介所说,备份人尽皆知,也很容易引起人的重视。根据需求写定期脚本,或者使用其他方式都是比较常见的。但是恢复就没有那么引人注目...

    Oracle入门教程.三思笔记.一步一步学Oracle

    [三思笔记]全面学习MySQL+Proxy特性.pdf [三思笔记]全面学习oracle的flashback特性.pdf [三思笔记]全面学习Scheduler.pdf [三思笔记]全面学习分区表及分区索引.pdf [三思笔记]全面学习和应用ORACLE+ASM特性.pdf ...

    yifang-read-back-end:阅读程序,使用yii2 + MySQL5.7 +正在学习elasticsearch引擎

    一些问题 是否可以合法使用书籍?...阅读程序,使用进展常驻的swoole +高性能的yii2框架+关系型数据库MySQL5.7 +正在学习全文分布式检索引擎elasticsearch 2020年11月21日13:09:09现在已完成的功能: 前

    Notes-of-books-in-Xmind:一些读书笔记,思维导图

    算法&数据结构计算机网络操作系统Python基础Python基础教程python学习手册(第四版)Python进阶Python cookbookFluent Pythonpython核心编程(第三版)Python编程导论(第二版)Python框架Flask web开发数据库MongoDB权威...

    2009达内SQL学习笔记

    数据太多时,最好别使用上句,会使DBMS降低检索和应用程序的性能。(*通配符) 2、对数据类型的列可进行运算(如加减乘除)。 3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法 (单引号,引起...

    java8源码-becoming-programming-god:成为编程之神,记录所有技术难点,梳理个人技术栈,从编程语言到分布式系统,到服

    java8 源码 becoming-programming-god 成为编程之神 1. 基础知识 (basic) 1.1 数据结构(data structure) ...读书笔记(comment) ...高性能mysqlss 3.8 Kafka权威指南 3.9 Http权威指南 3.10 Java8实战 3.11

    asp.net知识库

    Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集的反射 实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述...

Global site tag (gtag.js) - Google Analytics