1.Good schema design is pretty universal, but of course MySQL has special implementation details to consider. In a nutshell, it’s a good idea to keep things as small and simple as you can. MySQL likes simplicity, and so will the people who have to work with your database:
• Try to avoid extremes in your design, such as a schema that will force enormously complex queries, or tables with oodles and oodles of columns. (An oodle is somewhere between a scad and a gazillion.)
• Use small, simple, appropriate data types, and avoid NULL unless it’s actually the right way to model your data’s reality.
• Try to use the same data types to store similar or related values, especially if they’ll be used in a join condition.
• Watch out for variable-length strings, which might cause pessimistic full-length memory allocation for temporary tables and sorting.
• Try to use integers for identifiers if you can.
• Avoid the legacy MySQL-isms such as specifying precisions for floating-point numbers or display widths for integers.
• Be careful with ENUM and SET . They’re handy, but they can be abused, and they’re tricky sometimes. BIT is best avoided.
Normalization is good, but denormalization (duplication of data, in most cases) is sometimes actually necessary and beneficial. We’ll see more examples of that in the next chapter. And precomputing, caching, or generating summary tables can also be a big win. Justin Swanhart’s Flexviews tool can help maintain summary tables.Finally, ALTER TABLE can be painful because in most cases, it locks and rebuilds the whole table. We showed a number of workarounds for specific cases; for the general case, you’ll have to use other techniques, such as performing the ALTER on a replica and
then promoting it to master.
高性能MySQL笔记-第4章Optimizing Schema and Data Types
时间: 2024-10-10 20:44:09
高性能MySQL笔记-第4章Optimizing Schema and Data Types的相关文章
高性能MySQL笔记 第4章 Schema与数据类型优化
4.1 选择优化的数据类型 通用原则 更小的通常更好 前提是要确保没有低估需要存储的值范围:因为它占用更少的磁盘.内存.CPU缓存,并且处理时需要的CPU周期也更少. 简单就好 简单数据类型的操作需要更少的CPU周期. 尽量避免NULL 值可为NULL的列使得索引.索引统计和值比较都更复杂化.可为NULL的列会使用更多的存储空间. 整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT.分别使用8,16,24,32,64位存储空间.他们可以存储的值的范围从 -2
高性能MySQL笔记-第5章Indexing for High Performance-005聚集索引
一.聚集索引介绍 1.什么是聚集索引? InnoDB’s clustered indexes actually store a B-Tree index and the rows together in the same structure. 2.为什么一张表只能一个聚集索引? When a table has a clustered index, its rows are actually stored in the index’s leaf pages.The term “clustered
高性能MySQL笔记-第5章Indexing for High Performance-003索引的作用
一. 1. 1). Indexes reduce the amount of data the server has to examine.2). Indexes help the server avoid sorting and temporary tables.3). Indexes turn random I/O into sequential I/O. Lahdenmaki and Leach’s book also introduces a three-star system for
高性能mysql 4,5,6章优化总结
针对数据库的优化,我们不能单纯的说从哪一个方面,需要结合数据表的建立,数据类型的选择,索引的设计和sql语句来考虑,我就针对怎么建表,怎么选择数据类型,如何应用B-tree索引,hash索引和覆盖索引的特点来建立高效的索引策略,然后我具体对 count()查询,最大最小值查询,关联查询,子查询,GROUP BY ,limit 分页,Union查询做一些具体的说明,最后我说一下怎样使用切分查询和分解关联查询来重构我们的查询方式, 一.数据表的设计 首先我们要根据范式化和反范式化各自的优缺点,选择一
<;<;高性能mysql>;>;笔记1
转载请注明: TheViper http://www.cnblogs.com/TheViper <<高性能mysql>>这本书写的真的很好,只可惜本屌不才,大部分都看不懂,暂且记下与mysql优化有关,对自己有用的东西. 测试指标 吞吐量 吞吐量指的是单位时间内的事务处理数,单位tps(transaction per second).这一直是经典的数据库应用测试的指标. 响应时间或延迟 这个指标用于测试任务所需的整体时间 并发性 注意,web服务器并发性不等同于数据库的并发性.
《高性能MySQL》第三章MySQL服务器性能剖析学习笔记
MySQL性能优化介绍 什么是性能优化呢?其实我们往往从广义的定义是觉得一个MySQL系统的非功能性的优化都会看作是性能优化,比如我们会将数据库服务器的稳定性.每秒执行的SQL查询数目.系统的可扩展性.cpu利用率等等特性的优化都会看成是MySQL的性能优化. 我个人比较赞同本书的观点是MySQL性能优化应该就是指MySQL的查询响应时间的优化,MySQL性能优化就是将查询响应时间优化到一个客户或者用户体验能够接受的一个程度.
高性能MySQL笔记:第1章 MySQL架构
MySQL 最重要.最与众不同的特性是他的存储引擎架构,这种架构的设计将查询处理(Query Precessing)及其系统任务(Server Task)和数据的存储/提取相分离. 1.1 MySQL 逻辑架构 基础服务层 第一层构架 :包含连接处理.授权认证.安全等基础服务功能: 核心服务层 第二层构架 :包含查询解析.分析.优化(包括重写查询.决定表的读取顺序.选择合适的索引等).缓存以及内置函数,所有跨存储引擎的功能也在这一层实现:存储过程.触发器.视图等: 存储引擎层 第三层构架 :响应
<;<;高性能mysql>;>;笔记2
转载请注明: TheViper http://www.cnblogs.com/TheViper 这篇说下mysql查询语句优化 是否请求了不需要的数据 典型案例:查询不需要的记录,多表关联时返回全部列,总是取出全部列,重复查询相同的数据. 是否在扫描额外的记录 最简单的衡量查询开销的指标. 响应数据 扫描的行数 返回的行数 访问类型 在评估查询开销时,需要考虑下从表中找到某一行数据的成本,mysql有好多种方式可以查找并返回一行结果.有些访问方式可能需要扫描很多行才能返回一行结果,也有些方式可能
《高性能MySQL》读书笔记(上)
<High Performance MySQL>真是本经典好书,从应用层到数据库到硬件平台,各种调优技巧.常见问题全都有所提及.数据库的各种概念技巧平时都有接触,像索引.分区.Sharding等等,但要想真正提高还是得如此系统学习一下. Chapter 1: MySQL Architecture and History 1.1 Transaction Isolation Level 事务隔离级别真是个老生常谈的问题的,但大多材料一提到脏读.幻读.重复读就讲得云里雾里,所以还是自己动手实践能体会