sql优化

性能调优概述,这是一篇最通俗易懂性能调优的总结!

拈花ヽ惹草 提交于 2020-02-07 21:51:44
1. 作者概述 2. 什么是性能调优?(what) 3. 为什么需要性能调优?(why) 4. 什么时候需要性能调优?(when) 5. 什么地方需要性能调优?(where) 6. 什么人来进行性能调优?(who) 7. 怎么样进行性能调优?(How) 8. 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位)。 概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的语言尽量来准确的表达我的想法。 由于本人小平有限,有什么不对或者不清楚的地方欢迎大家交流指正。为了更能通俗易懂的理解我们即将要的性能调优的话题,我在这里简单的和大家说一下我写这篇文章的写作方法 5w+1h方法。 注,5w+1h就是对所做工作进行科学的分析,对某一工作在调查研究的基础上: · 就其工作内容(What) · 责任者(Who) · 工作岗位(Where) · 工作时间(When · 怎样操作(How · 以及为何这样做(Why) 即”5W”、”1H”进行书面描述,并按此描述进行操作,达到完成职务任务的目标。(来源“百度百科”) 哈哈听过马哥课程的一定不陌生! 二、什么是性能调优?(what) 在说什么是性能调优之前我们先来说一下,计算机的体系结构。 如上图,简单来说包括三块:硬件

mysql存储过程基础

别说谁变了你拦得住时间么 提交于 2020-02-07 19:23:31
存储过程简介 SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。当想要在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟,它允许控制数据的访问方式。 存储过程的优点: (1). 增强SQL语言的功能和灵活性 :存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 (2). 标准组件式编程 :存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 (3). 较快的执行速度 :如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。 (4).减少网络流量

Mysql安装、配置、优化

拈花ヽ惹草 提交于 2020-02-07 07:10:21
在Windows中安装MySQL: 安装包下载地址:https://dev.mysql.com/downloads/mysql/ 下载完后,将安装包解压到相应的目录,这里我将解压后的文件夹放在C:\Program Files (x86)\mysql-8.0.18-winx64 下, 打开刚刚解压的文件夹 C:\Program Files (x86)\mysql-8.0.18-winx64,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [client] # 设置mysql客户端默认字符集 default -character- set =utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=C:\\web\\mysql-8.0.11 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错 # datadir=C:\\web\\sqldata # 允许最大连接数 max_connections=20 # 服务端使用的字符集默认为8比特编码的latin1字符集 character- set -server=utf8 # 创建新表时将使用的默认存储引擎

cacti登陆密码忘记解决办法

纵饮孤独 提交于 2020-02-07 04:36:34
在使用cacti的过程中,我们有可能会忘掉密码,或者记不清楚。忘记密码很正常,不用担心,用下面的方法就可以搞定。 进入到系统;执行: [root@abc]# mysql -u root -p mysql>select md5(”asdlfjjlasdf”); md5是将数据进行md5加密 mysql> show databases; mysql> use cacti; mysql> show tables; mysql> select from user_auth; mysql>update user_auth set password=md5(”newpassword”) where id=’1′; 新的cacti密码就是newpassword了~~ 有时候,你登录不上系统,也不一定是密码不对,也可能是其它原因造成的,我就有一次因为系统产生很多邮件,把根目录占满,导致无法登录cacti。因此,如果你改了密码还是无法登录就要查查其它原因了。 本文出自:SEO网站优化_王先进SEO博客 http://seo.wangxianjin.com , 原文连接: http://seo.wangxianjin.com/?p=266 来源: https://www.cnblogs.com/weaver1/archive/2012/02/08/2342592.html

索引那些事儿----基于Mysql

做~自己de王妃 提交于 2020-02-07 03:38:59
目录 背景 索引 存储引擎 存储引擎种类 MyISAM引擎 InnoDB引擎 索引方式 索引类型 单列索引之普通索引 单列索引之唯一索引 单列索引之主键索引 组合索引 全文索引 空间索引 总结 武汉加油!!! 背景 数据库是什么? 这个问题大家都知道吧, 用来存放数据的, 生活中你在银行中存的金额, 或者一个户籍所中存放的户籍以及个人信息, 在比如一个学校的学生信息等等, 这些都存放在我们的数据库里面. 对不数据库中的数据一般采用一些 DML语句 (insert, update, delete)来进行数据操作. 想要查看数据库里面的数据使用select语句进行数据的查询. 对于数据在数据库里面的存放, 可以简单理解为类似 Excel表格 , 表格里面每一行代表一条数据. 一个 Sheet页 来代表一类数据. 一个例子 现在我们有一张excel表格, 里面存放了一个学校的学生信息, 包含学号, 姓名, 班级,年级等等信息 如果, 如果这张表里面只存放了较少的数据( 几十条, 或者十几条 ), 那现在让你 找到关于张三学生的信息 , 我们便开始从上到下或者从下到上开始浏览每一行数据, 直到找到 张三 , 便完成了数据的查询. 但是, 数据量大了, 这个excel存放了成千上万条数据, 再让你找出来张三, 你还是需要从上到下, 或者从下到上开始找 张三 , 这一次因为数据变多了,

Moebius集群:SQL Server一站式数据平台

狂风中的少年 提交于 2020-02-07 02:27:47
一、Moebius集群的架构及原理   1、无共享磁盘架构   Moebius集群采用无共享磁盘架构设计,各个机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中。这样每个机器就不需要硬件上的偶合,只需要能够互相连通。 ▲无共享磁盘架构    2、SQL解析及调度引擎 ——监控SQL语句,透明地切分应用与数据库   解析:解析应用程序传递的SQL语句,并作相应的优化加速及缓存。   调度:按照业务的需要将SQL语句调度到相应的 服务器 上;在对SQL语句进行分发时采用多种负载均衡策略,可以实现SQL语句一级的负载均衡。   处理:按照业务的需要对SQL语句进行相应的处理,包括修改、替换SQL语句等等。    3、故障监控引擎——快速发现故障节点并将其剥离   Moebius 集群通过“网络心跳”及“仲裁机制”可以实现自动故障监测,当侦测到集群中某节点发生故障时,会在最短的时间内发现并通过虚拟IP转移技术自动将故障节点的业务转移,同时将此节点剥离出集群。    4、数据同步引擎——同步数据,保证数据一致性及事务的连续性   数据实时复制是构建多机高可用及负载均衡,系统实时容灾、备份所采用的一种核心技术。Moebius Core宿主在SQL Server 数据库引擎中,监测数据库内数据的变化并分析导致数据变化的原因,将变化的数据以最小的消耗同步到其它节点中

MySQL随笔05_索引(下)

天大地大妈咪最大 提交于 2020-02-07 02:12:37
一、覆盖索引 非主键索引查询,若结果所需要的字段只在主键索引上有,则需要回到主键搜索树,此过程称为 回表 。 非主键索引查询,若结果所需要的字段在当前索引树上已经存在,可直接提供查询结果,不需要回表。即在查询中,非主键索引已经“覆盖了”查询需求,称为 覆盖索引 。 如下图,T表,ID为主键,k为普通索引,有如下两个查询语句: select * from T where k=3; -- 需要回表 select ID from T where k=3; -- 不需要回表 由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段 。 对于某些高频数据查询请求,可以创建联合索引,以便用到覆盖索引,从而不需要回表查,提升查询性能。 二、最左前缀原则 B 树 索引结构,可以利用索引的“最左前缀”,来定位记录。 只要满足最左前缀,就可以利用索引来加速检索。 这个最左前缀可以是联合索引的最左N个字段,也可以是字符串索引的最左M个字符。 在建立联合索引的时候,如何安排索引内的字段顺序 评估标准 ——索引的复用能力。 第一原则 ——如果通过调整顺序,可以减少维护一个索引,那么这个顺序就是需要优先考虑采取的。 三、索引下推 对于不符合最左前缀的部分的索引优化处理。 MySQL5.6之前,只能从非主键索引上 回表 到主键索引上找出数据行,在进行数据比对过滤。

Azure SQL Database Active Geo-Replication简介

拥有回忆 提交于 2020-02-07 00:32:15
笔者在《 迁移 SQL Server 数据库到 Azure SQL 实战 》一文中,介绍了如何把一个本地版的 SQL Server 数据库迁移到 Azure SQL Database。迁移虽然顺利实现了,但是现在我们又面临一个新的任务:如何对新迁移的数据库进行备份? 对于数据库的维护来说,备份工作可谓是重中之重。MS Azure 当然也提供了很完善的数据库备份功能,但是在动手创建备份计划前,请思考一下备份工作的真实目的:当然首先要保证数据的安全,一般来说定时创建数据库的备份文件,再拷贝到不同的存储设备上就可以了;其次,当灾难发生时,能不能在最短的时间内还原数据库从而恢复应用?最后,能不能让备份的数据库也创造一些价值? 让我们带着这些问题,一起来了解下 Azure 提供的一种可以跨越数据中心的数据库备份方式:Active Geo-Replication。 文章来源: 葡萄城产品技术社区 一、Active Geo-Replication 是什么? 这里的 Active 我们可以理解为 "正在运行的",Geo 表示的是 "geographic" 也就是 "地理的",Replication 是 "复制" 的意思。合起来的大意就是 "在不同的地理位置上运行的副本"。 Active Geo-Replication 允许我们最多配置4个只读的从数据库,再加上一个主数据库

Azure SQL Database Active Geo-Replication 简介

拥有回忆 提交于 2020-02-06 23:36:54
对于数据库的维护来说,备份工作可谓是重中之重。MS Azure 当然也提供了很完善的数据库备份功能。但是在动手创建备份计划前请思考一下备份工作的真实目的。当然首先要保证数据的安全,一般来说定时创建数据库的备份文件,再拷贝到不同的存储设备上就可以了。其次,当灾难发生时可不可以用最短的时间还原数据库从而恢复应用?再次,能不能让备份的数据库也创造一些价值… 让我们带着这些问题一起来了解下 Azure 提供的一种可以跨越数据中心的数据库备份方式:Active Geo-Replication。 Active Geo-Replication 是什么? 这里的 Active 我们可以理解为"正在运行的",Geo 表示的是"geographic"也就是"地理的",Replication 是"复制"的意思。合起来的大意就是"在不同的地理位置上运行的副本"。 Active Geo-Replication 允许我们最多配置4个只读的从数据库,再加上一个主数据库,此时你就会拥有五个数据库的实例,并且它们都是可访问的。注意,这五个数据库可以设置在不同的数据中心,也就是说当其中的四个数据中心完全挂掉的时候,你的数据库依然是安全的,并且可以立即使用,因为它是正在运行的数据库。主数据库可读写,并且以异步的方式把变更同步到其余的从数据库。我们可以轻松的把主数据库和从数据库配置到不同的数据中心,因而当灾难降临的时候

MySQL源码编译与初始化

陌路散爱 提交于 2020-02-06 23:03:05
1 . MySQL简介 1.1数据库有很多类型: 关系型数据库-->MySQL Oracle 非关系型数据库-->memcached redis 1.2什么叫关系型数据库??? SQL数据库数据与数据之间是有关系的,通过关系能够将一系列数据都提取出来。 1.3什么叫非关系型数据库??? NOSQL(not only SQL)数据库 2.安装源码编译必备的几个软件包 [root@yangwenbo yang] # yum -y install make gcc gcc-c ++ ncurses-devel cmake [root@yangwenbo yang] # rpm -qa make gcc gcc-c ++ ncurses-devel cmake gcc-4 .4 .7-4 .el6 .x86_64 cmake-2 .6 .4-5 .el6 .x86_64 gcc-c ++ -4 .4 .7-4 .el6 .x86_64 ncurses-devel-5 .7-3 .20090208 .el6 .x86_64 make-3 .81-20 .el6 .x86_64 3.源码编译与安装 3.1源码编译 cmake-2.8.6.tar.gz [root@yangwenbo yang]# ls cmake-2.8.6.tar.gz mysql-5.5.22.tar.gz 3.1.1解包