资讯专栏INFORMATION COLUMN

高性能MySQL读书笔记 (一)

wind5o / 2685人阅读

摘要:服务器逻辑架构连接线程处理基于的工具类似实现连接处理授权认证安全等查询缓存解析器实现查询解析分析优化缓存内置函数和跨存储引擎如存储过程触发器视图等存储引擎数据的存储和提取不会解析独立与上层服务器通过进行通信并发控制每种存储引擎有不同的锁策略

1. MySQL服务器逻辑架构

连接/线程处理: 基于C/S的工具类似,实现连接处理,授权认证,安全等.
查询缓存/解析器: 实现查询解析,分析,优化,缓存.内置函数和跨存储引擎如存储过程,触发器,视图等.
存储引擎: 数据的存储和提取.不会解析sql,独立与上层服务器通过api进行通信.

2. 并发控制

每种存储引擎有不同的锁策略和锁粒度
表锁是MySQL中最基本,开销最小的策略,阻塞其他用户对该表的读写操作.写锁比读锁有更高的优先级.
行级锁: InnoDB和XtraDB,行级锁只在存储引擎实现
事务: ACID, 原子性,一致性,隔离性(isolation),持久性(durability).
MySQL默认的事务隔离级别为可重复读(REPEATABLE READ)
死锁: 不同引擎处理方式不同.InnoDB 处理死锁方法,将持有最少行级排他锁的事务进行回滚
多版本并发控制(MVCC): 如InnoDB, 通过在每行记录后面保存两个列存储创建和删除时的系统版本号.

3. 存储引擎

创建表时,MySQL会在数据库子目录下创建一个同名.frm文件保存表的定义

InnoDB: 处理大量的短期事务, 通过间隙锁锁定查询涉及的行和索引中的间隙进行锁定,防止幻影行的插入, 基于聚簇索引创建表.通过一些机制和工具支持真正的热备份.一般优先考虑InnoDB存储引擎

MyISAM: 包括全文索引,压缩,空间函数,延迟更新索引键等特性,不支持事务和行级锁,崩溃后无法安全恢复.对于只读数据,表小可以忍受修复操作可以使用该引擎.
如果要使用全文索引,建议用InnoDB加上Sphinx组合替换MyISAM

使用引擎考虑:事务,备份,崩溃恢复,特有特性
日志型应用: MyISAM 或者Archive,因为开销低插入速度快更为适合
对于大数据量需要建立数据仓库,Infobright和TokuDB是比较好的解决方案

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/47305.html

相关文章

  • 性能MySQL读书笔记---查询优化

    摘要:查询优化查询缓慢的原因是否向数据库请求了不必要的数据查询时是否返回了全部或者大部分数据然后再进行处理的。进行单查或者多表联查时是否返回了全部列数据。将一次处理大量数据的操作,分解为多个小操作。尽量减少在数据库中进行排序操作 查询优化 查询缓慢的原因 是否向数据库请求了不必要的数据1.查询时是否返回了全部或者大部分数据然后再进行处理的。2.进行单查或者多表联查时是否返回了全部列数据。...

    keithyau 评论0 收藏0
  • 性能MySQL读书笔记---建表及数据类型优化

    摘要:高效,简单,准确,只能满足其中两个。计数器表计数器表在应用程序中使用很频繁例如统计朋友圈的点赞数某个文件的下载量空间访问人数等。 数据类型优化 1.数据类型优化 尽量使用可以正确储存数据的最小数据类型,例如状态字段时只有只需要几个数字就使用tinyint而不是int类型 尽量使用简单的方式去存储数据,可以用整形表示的时候就不要用字符串类型 例如性别,IP等、 避免NULL值的使用...

    Aldous 评论0 收藏0
  • 性能MySQL读书笔记 (二)

    摘要:基准测试应用验证系统的一些假设重现系统异常测试系统当前的运行情况模拟更高的负载规划业务增长测试应用适应可变环境的能力测试不同硬件软件和操作系统的配置策略针对整个系统的整体测试集成式单独测试单组件式测试指标吞吐量在线事务处理单位为每秒事务数响 1. 基准测试 1.1 应用 验证系统的一些假设重现系统异常测试系统当前的运行情况模拟更高的负载规划业务增长测试应用适应可变环境的能力测试不同硬件...

    xietao3 评论0 收藏0
  • 性能MySQL读书笔记(2)--MySQL基准测试

    摘要:当并发性增加时,需要测量吞吐量是否下降,响应时间是否变长可扩展性可扩展性不是压力测试的指标,可扩展性指标对于容量规范非常有用,它可以提供其他测试无法提供的信息,来帮助发现应用的瓶颈归根结底,应该测试那些对用户来说最重要的指标。 ...

    233jl 评论0 收藏0
  • 性能MySQL读书笔记 (三)

    摘要:与数据类型优化数据类型选择更小选择不超过需求范围的最小类型更简单避免使用含有列会使索引索引统计和值更为复杂分配空间根据实际需要分配使用内存临时表或操作时会比较糟糕特殊类型书中举例地址应该用无符号整数存储提供方法转换设计陷阱太多列存储引擎需要 1. schema与数据类型优化 1.1 数据类型选择 更小: 选择不超过需求范围的最小类型更简单避免使用Null: 含有Null列会使索引,索引...

    WrBug 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<