①分区表:
     -- 分区表限制:
一把表最多1024个分区
分区表中无法使用外键约束
   -- 分区表注意点:
按行写入大量数据时分区过多会出现问题,所以对大多数系统,100左右个分区是没有问题的
注:键分区和哈希分区没有此问题
-- 查询优化:对于访问分区来说,在where中带分区列是很重要的(能过滤部分分区)
 注:where中要使用分区函数列本身才能过滤分区,如where time='2017',而where YEAR(time)=2017错误
②视图:
概念:虚拟表,不存数据,数据来自其他表
更新视图:更新列必须来自同一表,且含GROUP BY、UNION、聚合函数及特殊情况不能更新
对性能的影响:重构数据库时可使用视图而不必修改表结构,用视图创建基于列的权限控制减少额外开销等
视图的限制:不支持物化视图(即视图在表中不可查看),不支持视图中建索引
③外键索引:
InnoDB是mysql目前唯一支持外键索引的内置引擎
外键成本:外键每次修改数据时都要求在另一张表多执行一次查找,当然外键在相关数据删除和更新上比在应用中维护更高效。
注:许多案例中发现,在对性能分析时发现外键就是瓶颈所在,删除外键后性能立即大幅提升。

④在mysql内部存储代码:
存储过程和触发器(可在你执行insert、update、delete时触发)、游标  ---另开文章细说
⑤字符集和校对:
字符集编码优先级:列>表>数据库
校对规则:_cs、_ci、_bin分别对应 大小写不敏感、大小写敏感、二进制值
⑥全文索引:
mysql不支持中文全文索引,应用其他引擎如 Sphinx等
⑦分布式(XA)事务:
企业报在分布式多数据库下仍能保证事务的ACID
⑧查询缓存:
-- 概念:缓存select结果,跳过解析、优化、执行阶段。
查询缓存是完全存储在内存中。mysql无法为每一个查询结果精确分配大小刚好配匹的缓存空间。
-- 查询缓存无法命中的原因:包含不确定的函数、未处理过该查询、内存用完被逐出
-- 如何判断查询缓存是否有效:     
查看Qache_hits和Qache_inserts的比值(3:1查询缓存有效,10:1最佳)
-- 配置和维护查询缓存:
query_cache_type:是否打开查询缓存,设置成ON、OFF、DEMAND(这个仅在明确写明SQL_CACHE下才放入缓存)
query_cache_size:查询缓存使用的总内存空间(值是1024整数倍)
query_cache_min_res_unit:查询缓存中分配内存块时的最小单位。
query_cache_limit:MySQL能缓存的最大查询结果
query_cache_wlock_invalidate:某表被锁住,是否仍然从查询缓存返回结果,默认OFF
减少碎片:命令 FLUSH QUERY CACHE  完成碎片整理
 -- InnoDB和查询缓存:表上有任何的锁,该查询结果无法缓存;sql语句有ON DELETE CASCADE,则相关联查询缓存一起失效
通用查询缓存优化:1) 用多个小表代替一个大表对查询缓存
2)批量写入时只需要做一次缓存失效
3)缓存空间太大,服务器可能僵死,办法是控制大小或禁用
4)用SQL_CACHE、SQL_NO_CACHE控制某个select是否缓存
5)对于写密集型应用,直接禁用查询缓存更好
注:若需要更高的缓存效率,推荐使用memcached或redis之类

《高性能mysql》之MySQL高级特性(第七章)相关推荐

  1. Educoder–Java高级特性(第一章)- IO流【笔记+参考代码】

    Educoder–Java高级特性(第一章)- IO流[笔记+参考代码] 第一关 1.下列关于字节和字符的说法正确的是(BC) A.字节 = 字符 + 编码 B.字符 = 字节 + 编码 C.字节 = ...

  2. Educoder–Java高级特性(第二章)- 集合框架【笔记+参考代码】

    Educoder–Java高级特性(第二章)- 集合框架[笔记+参考代码] 第一关 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,创建ArrayList集 ...

  3. 高性能mysql学习笔记--高级特性

    高性能mysql 七:高级特性 1,分区表 分区表是一个独立的逻辑表,但是底层由多个无力字表组成,实现分区的代码实际上是对一组地层表的句柄对象的封装,对分区表的请求,都会通过句柄对象转化成对储存引擎的 ...

  4. mysql 事务sqlserver_MYSQL高级特性 -- 事务处理_sqlserver

    下面以两个银行账户之间的转账为例子进行演示. 要使用mysql中的事务处理,首先需要创建使用事务表类型(如BDB = Berkeley DB或InnoDB)的表. CREATE TABLE accou ...

  5. UNIX环境高级编程--第七章

    1进程终止 进程正常终止: view plaincopy to clipboard #include<stdlib.h>    void exit(int status);    void ...

  6. jvm高级特性第4章-虚拟机性能监控与故障处理工具

    [4.2]jdk命令行工具 1.jps:虚拟机进程状况工具: C:\Users\pacoson>jps -l // 输出主类名称 12272 sun.tools.jps.Jps 12736 ch ...

  7. MySQL高级特性之分布式(XA)事务的介绍

    文章目录 分布式(XA) 事务 1.内部XA事务 2.外部XA事务 这一部分是 高性能MySQL(第3版)中第七章第11节内容:关于MySQL高级特性之分布式(XA)事务的介绍,(不感兴趣的可以忽略) ...

  8. 尚硅谷《MySQL高级特性篇》教程发布

    MySQL底层如何组织设计数据 怎么理解"索引即数据,数据即索引" 海量数据和高并发场景下如何设计主键 索引下推.覆盖索引对优化有什么优势 如何保证主从一致性 MVCC如何解决可重 ...

  9. 【一起学习Mysql】Msql的高级特性

    每日一句:虽然你没有我前女友漂亮 但我一见到你就有种想跟你定下来的感觉 Mysql中除了常用的开发过程中使用到的DML.DCL等常用功能之外,还有一些高级特性,也可以帮助实现高性能的查询以及在某些场景 ...

  10. MySQL高级特性 读书笔记

    MySQL高级特性 1. 分区表 对于用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成.实现分区的代码实际上是对一组底层表的句柄对象的封装 以下场景分区表可以起到非常大的作用: 1. 表 ...

最新文章

  1. 使用php+swoole对client数据实时更新
  2. java: \uxxxx unicode编码
  3. 话里话外:流程管理进入2.0时代
  4. 《视频直播技术详解》系列之六:延迟优化
  5. oracle rollup 小计,Oracle Group By 用法之 —— Rollup (小计功能)
  6. 编程大白给编程小白的四点建议
  7. linux运行win7,Windows7 上运行docker实战
  8. oracle中查找锁定状态的用户
  9. 【数字识别】基于matlab离散Hopfield神经网络数字识别【含Matlab源码 226期】
  10. sap导入中文数据乱码
  11. js截取指定字符分割字符串
  12. 安卓防盗软件_Android勒索软件分析
  13. 【Error】pwntools 解决安装terminator后 unable to find a shell
  14. mac虚拟摄像头插件_【OBS虚拟摄像头插件下载】OBS VirtualCam(OBS虚拟摄像头插件) v2.0.5 官方最新版-开心电玩...
  15. python绘制四叶草_python绘图四叶草_Python教程,python,绘图
  16. 华为nova8和小米10青春版哪个好
  17. Matlab动态作图——animatedline函数
  18. window系统安装msysgit(Git客户端软件)教程
  19. 国内外php主流开源cms汇总(2010年1月)
  20. 二分图匹配——匈牙利算法

热门文章

  1. 论文编写的9个实用软件
  2. 【路由器】Breed 介绍、刷入和使用
  3. cadz轴归零命令_CAD图形Z轴坐标归零方法
  4. SQL基本语法总结(含SQL代码)
  5. 可曾听闻【大话】二字
  6. linux下分析prn,Linux下echo命令详解
  7. FGUI使用方法(四):List列表的详细使用方式,包括List嵌套List
  8. Windows 7 with SP1中英文原版MSDN下载汇总
  9. **JAVA实习周记(第一周):任何的浮躁都是阻碍**
  10. 利用C Free3.5 本身获得自身注册码