分区表: 分区表是一个独立的逻辑表,底层通过多个物理表实现. mysql实现分区表的方式是对底层表的封装.这意味着没有全局索引,索引是建立在底层的每个表上的(跟ORACLE不一样). 用到分区表的几种情况: 数据量非常大,无法全部放到内存中. 只有部分数据是热点数据,其他数据是历史数据. 限制: 一个表只能有1024个分区,作者在100个以下是稳定的,太多会有性能问题. 分区表无法使用外键约束. PARTITION BY RANGE分区表达式必须是整数或者返回整数的表达式. PARTITIONE…
mysql逻辑架构图: 第一层 客户端 第二层(服务层):针对所有类型的存储引擎可以公共提取的部分.将存储引擎抽离之后的其他部分都在这里.如:查询解析,分析优化,内置函数,存储过程,触发器,视图. 第三层(存储引擎层):存储引擎负责mysql数据的存储和提取.服务器通过API与存储引擎进行通信.这些API屏蔽了不同存储引擎的具体实现差异.存储引擎API包含"开始一个事务","根据主键获取一行数据"等操作.存储引擎本身不会去解析sql. 注:mongdb也有存储引擎.…
对于用户而言,分区表是一个独立的逻辑表,但是在底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装,对分区表的请求都会通过句柄对象转化成对存储引擎的接口调用 意义 MySQL在创建表的时候可以通过使用 PARTITION BY 子句定义每个分区存放的数据.在执行查询的时候,优化器根据分区定义过滤那些没有我们需要的数据的分区,这样查询就可以无需扫描所有分区--只需要查找包含需要数据的分区即可. 分区的一个主要目的是 将数据按照一个较粗的粒度分别存放在不同的表中.这样做可以将相…
1.可以使用SHOW TABLE STATUS查询表的相关信息. 2.默认存储引擎是InnoDB,如果没有什么很特殊的要求,InnoDB引擎是我们最好的选择. 3.mysql的infobright引擎——Infobright是开源的MySQL数据仓库解决方案,引入了列存储方案,高强度的数据压缩,优化的统计计算(类似sum/avg/group by之类). 4.TokuDB——TokuDB 其实本身数据存储用到了B-TREE的变形版本Fractal-Tree. 5.查看MySQL版本SELECT…
1.1  mysql逻辑结构 第一层: 负责连接处理,授权认证,安全等事情 第二层:负责mysql的大部分核心功能 ,查询解析,分析,优化,缓存和所有的内置函数,所有跨存储引擎的功能都在这一层实现,,存储过程,视图,触发器等 第三层:存储引擎,负责mysql中数据的提取和存储: 1.2 并发控制—— 共享锁:也叫读锁,读锁是共享的,多个连接可以同时获取数据并互不干扰! 排他锁:也叫写锁,排他性,阻塞其他的写锁和读锁:在同一时间内,只能有一个用户执行写入操作,并且防止其他用户进行读取正在写入的同一…
一.类的继承 (一)继承的含义 1.在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这就是类的继承(泛化). 2.被继承的类称为父类(超类,基类),新的类称为子类(派生类). 3.子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法. 注: Java中只能单继承,也就是说每个类只能有一个直接父类:一个父类可以有多个子类. A     is  a     B A     extends     B A在某种情况下能够替换B做某些事(里氏替换) (二)语法: [修饰…
MySQL高级特性 1. 分区表:分区表是一种粗粒度的.简易的索引策略,适用于大数据量的过滤场景.最适合的场景是,在没有合适的索引时,对几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分区和索引 能够在内存中:限制单表分区数不要超过150个,并且注意某些导致无法分区过滤的细节,分区表对单条记录的查询并没有什么优势,需要注意这类查询的性能. 1). 对于用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象(Handler)的封装…
2017-07-25 14:15:43 前言:MYSQL从5.0和5.1版本开始引入了很多高级特性,例如分区.触发器等,这对有其他关系型数据库使用 背景的用户来说可能并不陌生.这些新特性吸引了很多用户开始使用MYSQL.不过,这些特性的性能到底如何, 还需要用户真正使用过才能知道. 1.1分区表 对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组 底层表的句柄对象(Handler Object)的封装. 对分区表的请求,都会通过句柄对象转化成对存储引擎…
上一篇文章<万字总结:学习MySQL优化原理,这一篇就够了!>文末给大家留有两个开放的问题: 有非常多的程序员在分享时都会抛出这样一个观点:尽可能不要使用存储过程,存储过程非常不容易维护,也会增加使用成本,应该把业务逻辑放到客户端.既然客户端都能干这些事,那为什么还要存储过程? JOIN本身也挺方便的,直接查询就好了,为什么还需要视图呢? 本文会试着回答这两个问题,希望能给你一些参考. 现在可以思考一个问题,如果数据量非常大的情况下,您根据业务选择了合适的字段,精心设计了表和索引,还仔细检查了…
MySQL管理 用户管理 CREATE USER username IDENTIFIED BY 'password'; 新建用户 CREATE USER@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO username@'%'; 赋予对应的权限 FLUSH PRIVILEGES; 新建用户之后可以使用如下命令来删除用户: DROP USER username; 删除用户 DELETE FROM user where Use…