sql优化

mysql skip-networking,bind-address

ⅰ亾dé卋堺 提交于 2020-02-19 11:45:28
单机运行MySQL使用skip-networking关闭MySQL的TCP/IP连接方式 skip-networking 开启该选项后就不能远程访问MySQL 为安全考虑希望指定的IP访问MySQL,可以在配置文件中增加bind-address=IP,前提是关闭skip-networking bind-address=192.168.1.100 MySQL优化应该按实际情况配置。 来源: CSDN 作者: Data & Safe 链接: https://blog.csdn.net/w892824196/article/details/104389189

MySQL版本调研

断了今生、忘了曾经 提交于 2020-02-19 08:42:00
1引言 1.1 编写目的 本文的主要目的是通过对当前项目中使用的各种版本的数据库进行比较,分析各自特性和稳定程度,最终推荐合适的版本作为今后的标准数据库。 1.2 背景 当前,部门负责管理维护的现网使用数据库有Oracle、MySQL、PostgreSQL 等;由于使用的数据库大小版本各异,不利于规范管理,需要制定统一的标准。 1.3 参考资料 无 2使用分析 2.1 使用概况 在线版本 使用率 MySQL5.1 较高 MySQL5.5 较高 MySQL5.6 较高 MySQL5.7 较高 Oracle/PostgreSQL 低 表1 2.2 常用系统分析 从统计结果看,使用较多是MySQL,标准数据库选型将从MySQL中挑选。MySQL是一个 关系型数据库管理系统 ,由瑞典 MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的 关系型数据库管理系统 ,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL 是一种关联 数据库管理系统 ,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL

mysql优化随笔一

我与影子孤独终老i 提交于 2020-02-19 00:43:41
优化的两个关键点在于:索引和sql语句 索引: 索引就是数据结构,通过索引可以快速查询到你想要的内容,即是排好序的快速查找数据 索引劣势:索引本身也很大,能提高查询数据速度,相对也会降低更新表的速度,所以如果是频繁更新的字段,不建议建立索引 sql语句: having 和where对比:where对聚合前的数据进行过滤,having对聚合后的数据进行过滤 最左匹配原则:和联合索引有关,因为索引只能用于查找key是否存在(相等),遇到范围查询等就不能进一步匹配,后续将退化为线性查找,所以列的排列顺序决定了可命中索引的列数, 来源: CSDN 作者: 个人存在 链接: https://blog.csdn.net/qq_38240938/article/details/104382616

MySQL数据库逐步安装

纵饮孤独 提交于 2020-02-18 22:08:37
本文以mysql数据库5.5版本为例进行说明。 安装包下载地址也可以去官网下载 提取码:l7uy 安装步骤 根据操作系统选择版本,这里使用的是mysql64位的,双击安装包,点击下一步。这一步,必须选择勾选“I accept the terms in the License Agreement”。然后点击next,继续安装。 这一步,显示3种安装类型: Typical:表示一般常用的组件都会被安装,默认情况下安装到C盘programFiles下。 Custom:自定义,可以选择安装什么功能,或者不安装什么功能,安装路径也是可以选择的; Complete:全部功能,但是会占用较多的磁盘空间。 这里选择Custom类型。点击next。 这一步,需要注意一下。mysql服务,以及server data files(数据文件服务)默认都是安装在C盘下,前者是安装在C盘programFiles,后者安装在C盘的programData(该文件夹默认情况下是隐藏的)路径下。可以分别修改两者的安装路径,注意安装路径中一定不要有中文。点击next。 此时会显示安装进度条,安装完成之后会弹出一些介绍页面,直接点击next即可。最后会显示安装完成界面。下边有一个“launch the MYSQL Instance Configuration Wizard”,勾选上,会显示mysql服务的配置页面。注意

Linux实战教学笔记40: Mha-Atlas-MySQL高可用方案实践(二)

你说的曾经没有我的故事 提交于 2020-02-18 07:11:06
六,配置VIP漂移 主机名 IP地址(NAT) 漂移VIP 描述 mysql-db01 eth0:192.168.0.51 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 mysql-db02 eth0:192.168.0.52 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 mysql-db03 eth0:192.168.0.53 VIP:192.168.0.60 系统:CentOS6.5(6.x都可以) 安装:mysql5.6 6.1 IP漂移的两种方式 通过keepalived的方式,管理虚拟IP的漂移 通过MHA自带脚本方式,管理虚拟IP的漂移 6.2 MHA脚本管理方式 (1)获取管理脚本master_ip_failover 提示:yum安装的manager是没有这个脚本的。 我们需要从manager的源码包里复制一个。 [root@mysql-db03 ~]# ll mha4mysql-manager-0.56.tar.gz -rw-r--r--. 1 root root 113914 Sep 4 18:43 mha4mysql-manager-0.56.tar.gz [root@mysql-db03 ~]# tar xf mha4mysql-manager-0.56

MySQL索引面试题分析

和自甴很熟 提交于 2020-02-17 11:26:22
MySQL索引面试题分析 话不多说,先建立一个表testTable,其中id为自增主键 在c1,c2,c3,c4上建立符合索引索引 CREATE INDEX idx_testTable_c1234 ON testTable ( c1 , c2 , c3 , c4 ) ; 现在的题目是:根据以下SQL分析索引使用的情况 1. SELECT * FROM testTable WHERE c1 = 'a1' AND c2 = 'a2' AND c3 = 'a3' AND c4 = 'a4' ; 2. SELECT * FROM testTable WHERE c4 = 'a4' AND c3 = 'a3' AND c2 = 'a2' AND c1 = 'a1' ; 首先我们用explain语句来分析一下1,2条SQL语句 EXPLAIN SELECT * FROM testTable WHERE c1 = 'a1' AND c2 = 'a2' AND c3 = 'a3' AND c4 = 'a4' ; EXPLAIN SELECT * FROM testTable WHERE c4 = 'a4' AND c3 = 'a3' AND c2 = 'a2' AND c1 = 'a1' ; 在这里我们看到它们的结果都是一样的,这是为什么呢? 其实,在MySQL逻辑架构中

非索引列上的统计 <第二篇>

早过忘川 提交于 2020-02-17 06:14:31
非索引列上的统计   有时候,可能在连接或过滤条件中的列上没有索引。即使对这种非索引列,如果查询优化器知道这些列的数据分布(统计),它也很可能做出最佳的选择。   除了索引上的统计,SQL Server可以在没有索引的列上建立统计。 即使不是索引列,当你开启了SQL Server自动创建统计功能,SQL Server就自动在执行WHERE、JOIN等查询列上创建统计。 数据分布的信息或者特定值出现在非索引列上的可能性,都能够帮助查询优化器确定最优的处理策略。即使查询优化器不能真正使用索引来定位这些列,这也仍然对其有利。如果SQL Server确信这些信息对创建更好的计划有利(这通常发生于这些列被用于一个断言时),则自动在非索引列上创建统计。默认情况下,在非索引列上创建统计是被开启的。它可以通过属性=》选项=》数据库自动创建统计设置来配置。可以使用ALTER DATABASE命令来编程覆盖这个设置。但是,为了更好的性能,建议保持这个特性开启。   下面来一个实战,以确定这个非索引列的统计也是有用的。首先,建两张表ta1,ta2分别都有十万行数据,但是反差很大,其中ta1的column2中只有一行为1,其余行全部为2。ta2正好相反。在这两个列上都没有索引。   大致的样子如下:      执行如下SQL语句: SELECT ta1.column2,ta2.column4 FROM

SQL注入详解

北战南征 提交于 2020-02-17 04:11:45
一:什么是sql注入   SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 二: SQL注入攻击的总体思路     1:寻找到SQL注入的位置   2:判断服务器类型和后台数据库类型   3:针对不同的服务器和数据库特点进行SQL注入攻击 三: SQL注入攻击实例 String sql = "select * from user_table where username= ' "+userName+" ' and password=' "+password+" '"; --当输入了上面的用户名和密码,上面的SQL语句变成: SELECT * FROM user_table WHERE username= '’or 1 = 1 -- and password='’ """ --分析SQL语句: --条件后面username=”or 1=1 用户名等于 ” 或1=1 那么这个条件一定会成功; --然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用,这样语句永远都--能正确执行,用户轻易骗过系统,获取合法身份。 --这还是比较温柔的,如果是执行 SELECT * FROM user_table WHERE username='' ;DROP DATABASE (DB

wordpress、Discuz产品部署

落爺英雄遲暮 提交于 2020-02-17 00:23:27
Wordpress、Discuz产品部署 三个产品提供挂载的目录信息 BLOG /data/www/blog/wp-content/uploads/ 图片和附件 BBS: /data/www/bbs/data/attachment/image /data/www/bbs/uc_server/data/avatar 图像目录 /data/www/bbs/data/attachment/forum/ 图片路径 WWW: /data/www/www/images/swfupload /data/www/www/uploads/allimg/ 创建一个博客,用wordpress 数据库的设置 把nginx和php加入开机自启动: [root@lnmp-1 extra]# vim /etc/rc.local /application/nginx/sbin/nginx /application/php/sbin/php-fpm 首先,在数据库创建一个wordpress的数据库 mysql> create database wordpress; 创建wordpress 的数据库 mysql> show databases; 查看所有的数据库 创建用户wordpress 并指定wordpress在192.168.162.135上登录,给出密码 mysql> grant all on

MySQL锁与事务隔离级别

主宰稳场 提交于 2020-02-16 22:39:21
1、概述 (1) 锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、IO等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 (2) 锁的分类 从性能上分为 乐观锁 和 悲观锁 乐观锁:每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。 例子:① 在数据库的表中加一个version字段,用来记录每次修改数据的版本号,防止并发修改数据出错;② CAS原子类。 悲观锁:每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。 例子:synchronized关键字。 从对数据库操作的类型分为 读锁 和 写锁 (都属于悲观锁) 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。 写锁(排它锁):当前写操作没有完成前,它会阻断其他session的写锁和读锁。(session:数据库连接) 从对数据操作的粒度分为 表锁 和 行锁 。 2、表锁与行锁 (1) 表锁( 偏读 ) 表锁偏向MyISAM存储引擎 ,开销小,加锁快,无死锁