sql优化

关于MySQL的基准测试

痴心易碎 提交于 2020-01-13 00:15:03
什么是基准测试 当我们对数据库进行优化后,只有进行测量系统性能才能知道优化是否有效,这种测量的方式就是基准测试。基准测试的定义如下: 基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软/硬件变化时,重新进行基准测试以评估变化对性能的影响 我们可以这样认为: 基准测试是针对系统设置的一种压力测试,可以用来观察系统在不同压力下的行为。评估系统的容量,观察系统如何处理不同的数据。 但是基于测试不等同于压力测试: 基于测试:直接、简单、易于比较,用于评估服务器的处理能力。基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环节没有关系 压力测试:对真实的业务数据进行测试,获得真实系统所能承受的压力。压力测试需要针对不同的主题,所使用的数据和查询也是真实用到的 对MySQL进行基准测试的目的: 1、建立MySQL服务器的性能基准线,确定当前MySQL服务器的运行情况 2、模拟比当前系统更高的负载,以找出系统的扩展瓶颈。增加数据库的并发,观察QPS、TPS的变化,以确定并发量与性能最优的关系 3、测试不同的硬件、软件和操作系统配置 4、证明新的硬件设备是否配置正确 如何进行基准测试 通常来说,基准测试有两种方式: 1、对整个系统进行基准测试:从系统的入口进行测试(网站Web前端,手机APP前端) 优点:能够测试整个系统的性能,包括web服务器缓存

LAMP环境搭建media wiki、dokuwiki

孤街醉人 提交于 2020-01-12 17:51:52
准备工作 安装apache(httpd) 编译安装httpd tar xzvf httpd-2.2.17.tar.gz -C /data/server cd /data/server/httpd-2.2.17 ./configure --prefix=/data/server/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi make -j4 && make install 优化路径并启动: ln -s /data/server/httpd/bin/* /usr/local/bin/ apachectl start 此时启动会提示: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::963a:9ac6:910d:70f2 for ServerName 解决办法:在末行添加:ServerName localhost:80 验证: 安装MySQL 编译安装mysql 提前安好需要的安装环境 yum -y install cmake nucrses-devel yum -y install ncurses-devel 编译安装: tar zxvf mysql-5.5.22

【ArcGIS】文件地理数据库,个人地理数据库与ArcSDE的局别

无人久伴 提交于 2020-01-12 17:24:39
地理数据库的类型 地理数据库是用于保存数据集集合的“容器”。有以下三种类型: 文件地理数据库 - 在文件系统中以文件夹形式存储。每个数据集都以文件形式保存,该文件大小最多可扩展至 1 TB。建议使用文件地理数据库而不是个人地理数据库。 个人地理数据库 - 所有的数据集都存储于 Microsoft Access 数据文件内,该数据文件的大小最大为 2 GB。 ArcSDE 地理数据库 - 也称作多用户地理数据库。这种类型的数据库使用 Oracle、Microsoft SQL Server、IBM DB2、IBM Informix 或 PostgreSQL 存储于关系数据库中。这些地理数据库需要使用 ArcSDE,并且在大小和用户数量方面没有限制。 比较三种类型的地理数据库 关键特征 ArcSDE 地理数据库 文件地理数据库 个人地理数据库 描述 在关系数据库中以表的形式保存的各种类型的 GIS 数据集的集合(为在关系数据库中存储和管理的 ArcGIS 建议使用的本机数据格式。) 在文件系统文件夹中保存的各种类型的 GIS 数据集的集合(为在文件系统文件夹中存储和管理的 ArcGIS 建议使用的本机数据格式。) 在 Microsoft Access 数据文件中存储和管理的 ArcGIS 地理数据库的原始数据格式。(此数据格式的大小有限制且仅适用于 Windows 操作系统。) 用户数

数据库的SQL优化

狂风中的少年 提交于 2020-01-12 17:04:52
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 (因为在条件查询条件添加索引,会直接被检索到列,会非常的快速) 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 ( 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. ) 例如: 1 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: 1 select id from t where num = 0 3.不要使用 1 sleect * from name (这个绝对的全部的查询,千万不要剩力气去用) 4.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。 1 select id from name where id>5 5.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如: 1 select id from t where num=10 or Name = 'admin' 可以这样查询: 1 select id from t where num = 10 2 union

数据库优化

淺唱寂寞╮ 提交于 2020-01-12 17:04:21
目的: 避免网页访问错误 避免访问网页由于连接timeout出现5XX错误 慢查询造成页面的无法加载 由于阻塞造成的数据的无法提交 增加数据库的稳定性 很多数据库问题都是由于低效的查询引起的 优化用户体验 浏览网页的速度 良好网页功能的体验 数据库优化的几个方面以及成本问题 一、SQL优化 如何发现有问题的SQL 使用MYSQL慢查询日志对有效率问题的SQL进行监 如何开 启慢查询日志 关于慢查询日志的几个变量 1.slow_query_log 慢查询日志 2.slow_query_log_file 慢查询日志的存放地址 3.log_queries_not_using_indexes 没使用索引的查询是否放入慢查询日志 4.long_query_time 对查询SQL最长多久的SQL进行记录,测试中我们把他设置为0以便对所有的SQL都进行慢查询日志记录 我们可以通过查询变量的方式对这几个变量进行查询 例如:show variables like 'slow_qu%' 看他们的开启状态或者值 设置慢查询 set global slow_query_log_file='/home/mysql/sql_log/slow-mysql.log' 设置慢查询日志的存放地方 set global log_queries_not_using_indexes=on

MYSQL优化

ぃ、小莉子 提交于 2020-01-12 17:02:42
优化目标 减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。 降低 CPU 计算 除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了。order by, group by,distinct … 都是消耗 CPU 的大户(这些操作基本上都是 CPU 处理内存中的数据比较运算)。当我们的 IO 优化做到一定阶段之后,降低 CPU 计算也就成为了我们 SQL 优化的重要目标 优化方法 改变 SQL 执行计划 明确了优化目标之后,我们需要确定达到我们目标的方法。对于 SQL 语句来说,达到上述2个目标的方法其实只有一个,那就是改变 SQL 的执行计划,让他尽量“少走弯路”,尽量通过各种“捷径”来找到我们需要的数据,以达到 “减少 IO 次数” 和 “降低 CPU 计算” 的目标 常见误区 count(1)和count(primary_key) 优于 count(*) 很多人为了统计记录条数,就使用 count(1) 和 count(primary_key) 而不是 count(*) ,他们认为这样性能更好,其实这是一个误区。对于有些场景,这样做可能性能会更差,应为数据库对 count(*)

MySQl资料链接

你。 提交于 2020-01-12 14:40:47
原文:http://www.uml.org.cn/sjjm/sjjm-MySql.asp MySQl MySQL高可用数据库内核深度优化的四重定制 MySQL数据表存储引擎类型及特性 MySQL分布式数据库高可用架构、复制机制、多机房 Mysql高并发优化 我必须得告诉大家的MySQL优化原理 MySQL注入攻击与防御 腾讯云:MySQL数据库的高可用性分析 一步一步打造MySQL高可用平台 MySQL 日志管理详解 MySQL锁解决并发问题详解 MySQL的配置与管理 MySQL日志管理 MySQL 5.7新特性介绍 MySQL数据库读写分离中间件Atlas 京东MySQL数据库主从切换自动化 全面了解MySql中的事务 MySQL NULL值简介 MySQL备份的持续验证:还原备份 初识MySQL存储过程 优步工程团队对容器化MySQL的应用 MySQL NULL值简介 MySQL备份的持续验证:还原备份 MySQL SQL语句优化技巧 MySQL简单主从方案及暴露的问题 Uber为什么从Postgres迁移到MySQL 一种MySQL到HBase的迁移策略的研究与实现 MySQL 索引详解大全 MYSQL企业常用架构与调优经验分享 SQL优化之六脉神剑 MySQL 大表优化方案探讨 mysql 数据库引擎 MySQL数据库事务隔离级别 MySQL 用户权限详细汇总

分享自己的超轻量级高性能ORM数据访问框架Deft

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-12 13:55:46
Deft 简介 Deft是一个超轻量级高性能O/R mapping数据访问框架,简单易用,几分钟即可上手。 Deft包含如下但不限于此的特点: 1、按照Transact-SQL的语法语义风格来设计,只要调用者熟悉基本的Transact-SQL语法即可瞬间无忧开码,大大降低了学习Deft的成本,甚至零成本。 2、性能十分不错(个人觉得易用性很重要,只要性能不拖后腿就好了),通过缓存+Emit反射IDataReader,极速获取List<T>。 3、强大的查询功能,支持使用Lambda表达式任意组装where条件,支持各种各样的运算符和括号优先级,支持给查询字段取别名。 4、支持SQLServer、MySQL、Oracle、SQLite等多数据库类型,同时也支持一个业务系统里面存在多个数据库。 5、支持事务、分页查询、排序等。 6、支持like,in等sql操作符,支持avg,count,max,min,sum等sql函数。 7、颜值高,整套语法接口设计的十分巧妙,支持Lambda 表达式,链式编程,任意组装sql,极度美观。 8、支持手写sql, List<T> Select<T>(string sql)。 9、各种映射能力,包括任意查询的结果映射,支持dynamic。 10、实体类非常简单,手写即可,不需要借助工具,也没有特性标记或者继承BaseEntity等杂七杂八的东西。 11

MySQL数据库的三大范式和备份

心不动则不痛 提交于 2020-01-12 09:57:53
MySQL数据库的三大范式和备份 文章目录 MySQL数据库的三大范式和备份 前言 1.MySQL数据库的三大范式 1.范式的简介 2.通俗的理解 2.数据库备份的重要性 2.1数据库备份的重要性 2.2造成数据丢失的原因 3.数据库备份的分类 3.1从物理与逻辑的角度 3.2数据库的备份的策略角度 3.3MySQL完全备份 1.完全备份 2.完全备份的优点 3.完全备份的缺点 3.4mysqldump备份数据库 1.MySQL数据库的备份的方式 2.mysqldump命令 3.mysqldump命令备份 3.5恢复数据库或者数据库中的表 1.恢复数据库 2.恢复数据库中的表 3.MySQL备份思路 4.MySQL增量备份 4.1MySQL增量备份的恢复方法 前言 我们已经能够很明显的区分出数据库的增量备份和差异备份了,下面,我们就来仔细研究研究如何进行备份。 1.MySQL数据库的三大范式 1.范式的简介 范式的英文名称是Normal Form,它是英国人E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的。 范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF)

mysql innodb 存储引擎

霸气de小男生 提交于 2020-01-12 09:39:27
--MySQL 结构有两部分组成 1.MySQL server 层 2.存储引擎层 --注:到 存储引擎层之前都属于 MySQL server 层 MySQL 5.1到 5.7 ,大版本 没有变化 , 小版本 唯一的变化就是 存储引擎 ,MySQL server 层没有变过 在 MySQL 5.5之后 包括 5.5 ,默认的存储引擎都是 innodb (engine=innodb) ,但是 在 5.5之前的版本,默认的存储引擎是 myisam ,基于表的 所以 如果是 5.5之前的版本,创建表的时候 需要指定 engine=innodb ,否则创建出来的表 都是 myisam 存储引擎的 基本上 5.1之后就是 5.5了;期间都是一个跳板 MySQL组成部分: 1.连接池组件 2.管理服务和工具组件 3.SQL接口组件 4.查询分析器组件 5.优化器组件 6.缓冲组件 7.插件式存储引擎 8.物理文件 存储引擎是基于表的,不是基于数据库的 mysql 的核心就是存储引擎       MySQL 表存储引擎 MySQL 插拔式的存储引擎架构提供了一系列标准的管理和服务支持 存储引擎是基于表的,而不是基于数据库的 根据具体的应用选择合适的存储引擎 OLTP:在线联机事物系统,---读多写少,比如:电商,支持行级锁,支持外键 OLAP:在线联机分析系统,---这个接触的几率很小