8.1 Optimization Overview
8.1 Optimization Overview 8.1 Optimization Overview
8.2 Optimizing SQL Statements
8.3 Optimization and Indexes
8.4 Optimizing Database Structure
8.5 Optimizing for InnoDB Tables
8.6 Optimizing for MyISAM Tables
8.7 Optimizing for MEMORY Tables
8.8 Understanding the Query Execution Plan
8.9 Controlling the Query Optimizer
8.10 Buffering and Caching
8.11 Optimizing Locking Operations
8.12 Optimizing the MySQL Server
8.13 Measuring Performance (Benchmarking)
8.14 Examining Thread Information 本章节介绍如何优化MySQL 性能和提供例子,优化涉及配置,调优和性能测量, 在几个层次。这取决于你的工作角色(开发,DBA或者两者的结合), 你可以优化在单个SQL层面, 整个应用,或者一个单独的数据库服务器,或者多个网络数据库服务器。 有时候你可以主动和规划性能,当其他时间你可能处理一个配置或者代码执行在一个问题发生后, 优化CPU 和内存使用可以改善可扩展性,允许数据库处理更多负载没有缓慢的情况下 8.1 Optimization Overview 优化概述: 数据库性能 取决于数据库层面的几个因素,比如表,查询和配置设置。 那些软件构造引起CPU和I/O 操作在硬件层面,你必须最小化和尽可能的有效。 当你从事数据库性能,你通过学习高层面规则和准则用于软件一侧, 和维护性能使用墙上时间。当你变为一个专家,你了解很多关于内部发生的, 开始测量东西比如CPU 周期和I/O 操作。 典型的用户目标是得到更好的数据库性能 在现有的软件和硬件配置. 高级用户寻找机会提高MySQL 软件本身,或者开发它们自己的存储引擎和硬件应用来扩展MySQL 生态系统 数据库层面优化: 最重要的因素在让一个数据库应用快是它的基本设计: 1. 表结构正确吗?特别是,确定columns有正确的数据类型, 确保每个表有合适的列对于工作的类型?比如, 应用执行频繁更新经常是很多表的少量列, 当应用 分析大量的数据经常是几个表的很多列 是否有正确的索引让查询更有效 是否使用合适的存储引擎对于每个表,并利用每个存储引擎的优势和功能 特别的,你选择一个事务存储引擎比如InnoDB 或者一个非事务存储引擎 比如MyISAM 是非常重要的 对于性能和扩展。 注意; 在MySQL 5.5和更高的版本,InnoDB 是默认的存储引擎对于新的表。 实际上, InnoDB 性能优势意味着InnoDB 表可以比MyISAM表性能好,尤其对于繁忙的数据库 每个表 使用一个合适的行格式?这个选择也取决于表使用的存储引擎。特别的, 压缩表使用更少的磁盘和需要更少的io 来读和写。压缩是可用的对于所有类型的负载使用InnoDB, 和对于只读的MyISAM表。 应用程序使用一个合适的锁策略? 比如,通过允许共享访问,数据库操作可以并发运行, 请求独占访问当适当的 这样特定的操作可以得到优先级。 再次, 存储引擎的选择是重要的。 InnoDB 存储引擎处理很多锁问题不需要你参与,允许更好的并发在数据库和降低实验和优化你的代码 所有的内存区域用于正确的cache ?也就是说, 足够大来容纳你经常访问的数据, 但是不能太大 会是内存负载太大出现paging. 主要的内存区域是配置用于InnoDB buffer pool,MyISAM key cache,和其他Mysql 查询cache. 硬件层面优化: 任何数据库应用最后达到硬件限制 当数据库变的越来越繁忙。 一个DBA必须评估是否它是可能调整应用或者重新评估server来避免那些瓶颈, 或者 是否需要更多的硬件资源,系统瓶颈通常来自这些来源: 磁盘寻道,它消耗时间对于disk来找到一个数据的部分。 随着现代磁盘的发展, 平均时间用于这个是通常小于10毫秒,因此我们可以理论上 1秒钟做100次寻址。 这时间改善使用新的磁盘是很难优化的对于单个表。 优化寻址时间是分布数据到一个或者多个磁盘。 磁盘读取和写入, 当磁盘是在正确的位置,我们需要读或者写数据。在现代磁盘,一个磁盘至少10-20M/s吞吐量。 这是容易优化相比寻到 因为你可以读从多个磁盘并行读取 内存带宽,当处理器需要更多的数据来填满cpu cache, 主要的内存带宽成为一个瓶颈。 这是一个不常见的瓶颈 可移植性和性能:
8.1 Optimization Overview的更多相关文章
- Mysql Optimization Overview
The information below i get from http://dev.mysql.com/doc/refman/8.0/en/optimize-overview.html Optim ...
- 凸优化简介 Convex Optimization Overview
最近的看的一些内容好多涉及到凸优化,没时间系统看了,简单的了解一下,凸优化的两个基本元素分别是凸函数与凸包 凸集 凸集定义如下: 也就是说在凸集内任取两点,其连线上的所有点仍在凸集之内. 凸函数 凸函 ...
- 凸优化(Convex Optimization)浅析
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 在机器学习中, 很多情况下我们都需要求得一个 问题的全局最优值(global optimum) ...
- MySQL文档翻译(八)附英文原文---性能优化概览
优化概述 数据库性能表现依赖于数据库级别的几个因素,比如表,查询和配置设置.这些软件在硬件级别通过CPU和IO操作构筑结果,你需要尽可能的使用最少的资源达到最大的效果.当你专注于数据库的性能表现时,你 ...
- 【mysql 优化 1】优化概述
原文地址:Optimization Overview 数据库性能取决于几个数据库层面的因素,比如:表设计,查询语句,配置. 这些软件结构导致你必须在CPU和I/O 操作的硬件层面做到尽可能的最小化和高 ...
- 统计学习方法6—logistic回归和最大熵模型
目录 logistic回归和最大熵模型 1. logistic回归模型 1.1 logistic分布 1.2 二项logistic回归模型 1.3 模型参数估计 2. 最大熵模型 2.1 最大熵原理 ...
- (转载) AutoML 与轻量模型大列表
作者:guan-yuan 项目地址:awesome-AutoML-and-Lightweight-Models 博客地址:http://www.lib4dev.in/info/guan-yuan/aw ...
- (转)AutoML 与轻量模型大列表: awesome-AutoML-and-Lightweight-Models
Awesome-AutoML-and-Lightweight-Models 原文:http://bbs.cvmart.net/articles/414/zi-yuan-automl-yu-qing-l ...
- SQL optimizer -Query Optimizer Deep Dive
refer: http://sqlblog.com/blogs/paul_white/archive/2012/04/28/query-optimizer-deep-dive-part-1.aspx ...
随机推荐
- Android写入文件操作权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses- ...
- Missing Ranges 解答
Question Given a sorted integer array where the range of elements are in the inclusive range [lower, ...
- Java ConcurrentHashmap 解析
总体描述: concurrentHashmap是为了高并发而实现,内部采用分离锁的设计,有效地避开了热点访问.而对于每个分段,ConcurrentHashmap采用final和内存可见修饰符Volat ...
- MySQL函数简介
//将时间戳长整形数值转换为yyyy-MM-dd HH:mm:ss格式SELECT FROM_UNIXTIME(CREATE_TIME, '%Y-%m-%d %H:%i:%S') FROM TBLS ...
- Sea.js
SeaJS与RequireJS最大的区别 执行模块的机制大不一样-----------------------------------由于 RequireJS 是执行的 AMD 规范, 因此所有的 ...
- jqTransform——学习(1)
官网:http://www.dfc-e.com/metiers/multimedia/opensource/jqtransform/ 转载:http://www.helloweba.com/view- ...
- android 判断是否有sim卡及运营商
判断是否有sim卡的方法: int absent = TelephonyManager.SIM_STATE_ABSENT; if (1 == absent) { Log.d(TAG,"请 ...
- Ngnix安装
一.pcre安装 yum install pcre 或 https://sourceforge.net/projects/pcre/files/pcre/8.37/ 手动下载后上传至linux 1.y ...
- VritualBox 中Debian安装tool
VritualBox 中Debian安装tool 环境 Debian 8 VirtualBox 配置Debian的源 #163源 deb http://mirrors.163.com/debian/ ...
- JavaScript原型,原型链 !
js原型 问题:什么是js原型? js每声明一个function,都有prototype原型,prototype原型是函数的一个默认属性,在函数的创建过程中由js编译器自动添加. 也就是说:当生产一个 ...