mysql数据库

CentOS6.x下yum安装MySQL5.5/5.6

流过昼夜 提交于 2020-01-26 13:57:34
1. 安装mysql-5.5的yum源 # rpm -ivh http://repo.mysql.com/yum/mysql-5.5-community/el/6/x86_64/mysql-community-release-el6-5.noarch.rpm 安装MySQL5.6的可以安装: # rpm -ivh http://repo.mysql.com/mysql-community-release-el6.rpm 最新的yum源可以去http://dev.mysql.com/downloads/repo/yum下载 2. 修改安装好的yum源 编辑 /etc/yum.repos.d/mysql-community.repo文件,将5.5的enabled改为1;5.6的enabled改为0 [root@localhost yum.repos.d]# vim mysql-community.repo # Enable to use MySQL 5.5 [mysql55-community] name=MySQL 5.5 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:/etc/pki/rpm

mysql sort 性能优化

谁说胖子不能爱 提交于 2020-01-26 13:57:22
http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html 这段时间mysql 数据库的性能明显降低,iowait达到了30, 响应时间明显变长. 通过show processlist 查看,发现有很多session在处理sort 操作, 跟DBA一起调试优化,增大sort_buffer_size 好象效果也不大, 通过查看监控,也没发现有硬盘排序. 我怀疑是sort导致性能下降,固让开发修改程序, sort由程序来处理. 星期五发布后,今天发现压力固然好了很多. 因此基本上能确定是sort引起的问题. 今天仔细分析问题,查看mysql的参数时,看到一个叫做 max_length_for_sort_data 的 参数, 值是1024 仔细查看mysql 的filesort算法时, 发现mysql的filesort有两个方法,MySQL 4.1之前是使用方法A, 之后版本会使用改进的算法B, 但使用方法B的前提是列长度的值小于 max_length_for_sort_data, 但我们系统中的列的长度的值会大于1024. 因此也就是说在sort的时候, 是在使用方法A, 而方法A的性能比较差, 也就解释了我们的mysql系统在有sort时,性能差,去掉之后性能马上提高很多的原因. 马上修改 max_length

Mysql 层级、执行顺序、执行计划分析

一笑奈何 提交于 2020-01-26 13:25:04
逻辑分层 下面是MySQL的逻辑分层图: 连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。 服务层:包括缓存查询、解析器、优化器,这一部分是MySQL核心功能,包括解析、优化SQL语句,查询缓存目录,内置函数(日期、时间、加密等函数)的实现。 引擎层:负责数据存储,存储引擎的不同,存储方式、数据格式、提取方式等都不相同,这一部分也是很大影响数据存储与提取的性能的;对存储层的抽象。 存储层:存储数据,文件系统。 存储引擎 查看数据库支持的存储引擎:show engines; 如果要想查看数据库默认使用哪个引擎,可以通过使用命令: show variables like '%storage_engine%'; InnoDB,MyISAM的主要区别: InnoDB:在MySQL5.5开始作为默认的存储引擎,支持事务,行级锁,适合高并发场景,XA协议支持分布式事务, 事务优先 。 MyISAM:不支持事务, 性能优先 ,表级锁,不适合高并发场景。 sql执行顺序: https://www.cnblogs.com/annsshadow/p/5037667.html explain-执行计划 explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法

【mysql】Innodb三大特性之insert buffer

旧城冷巷雨未停 提交于 2020-01-26 12:33:27
一、什么是insert buffer insert buffer是一种特殊的数据结构(B+ tree) 并不是缓存的一部分,而是物理页 , 当受影响的索引页不在buffer pool时 缓存 secondary index pages的变化, 当buffer page读入buffer pool时 ,进行合并操作,这些操作可以是 INSERT , UPDATE , or DELETE operations (DML) 最开始的时候只能是insert操作,所以叫做insert buffer,现在已经改叫做change buffer了 insert buffer 只适用于 non-unique secondary indexes 也就是说 只能用在非唯一的索引上 ,原因如下 1、primary key 是 按照递增的顺序进行插入的,异常插入聚族索引一般也顺序的,非随机IO 2 写唯一索引要检查记录是不是存在,所以在修改唯一索引之前,必须把修改的记录相关的索引页读出来才知道是不是唯一、这样Insert buffer就没意义了,要读出来(随机IO) 所以只对非唯一索引有效 二、insert buffer的原理 对于为非唯一索引,辅助索引的修改操作并非实时更新索引的叶子页,而是把若干对同一页面的更新缓存起来做,合并为一次性更新操 作, 减少IO,转随机IO为顺序IO

php中操作mysql的函数库

喜夏-厌秋 提交于 2020-01-26 11:56:01
发现php中的mysql库是一个函数库 而不是一个类库 使用面向过程的形式组织。 mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数 mysql_change_user -- 改变活动连接中登录的用户 mysql_client_encoding -- 返回字符集的名称 mysql_close -- 关闭 MySQL 连接 mysql_connect -- 打开一个到 MySQL 服务器的连接 mysql_create_db -- 新建一个 MySQL 数据库 mysql_data_seek -- 移动内部结果的指针 mysql_db_name -- 取得结果数据 mysql_db_query -- 发送一条 MySQL 查询 mysql_drop_db -- 丢弃(删除)一个 MySQL 数据库 mysql_errno -- 返回上一个 MySQL 操作中的错误信息的数字编码 mysql_error -- 返回上一个 MySQL 操作产生的文本错误信息 mysql_escape_string -- 转义一个字符串用于 mysql_query mysql_fetch_array -- 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 mysql_fetch_assoc -- 从结果集中取得一行作为关联数组 mysql_fetch

3分钟让你记住 - MySQL的体系架构和查询原理

谁都会走 提交于 2020-01-26 08:24:44
引言 数据库在我们工作中是常用的工具,公司的重要业务信息大部分都会存储在数据库中。 因此,对于开发人员或运维人员来说,掌握数据库基本原理是必要的技能。无论你使用的是何种数据库,了解数据库的 体系架构 是非常必要的。“知此知彼,方能百战百胜”。 下面小编就带你来了解 MySQL的体系架构 。 首先我们得明确MySQL的体系架构主要是 数据库 和 数据库实例 组成的,在了解MySQL的实质之前,先来了解以下的概念。 MySQL是一种 单进程多线程 的数据库,而 数据库实例 则是以一个 进程 的方式在系统中体现出来的。 MySQL的文件格式有 ibd、MYI、MYD、frm 等结尾的格式文件。 一、MySQL架构示意图 从上图中我们可以发现,整个MySQL框架由两部分组成, 1、 上层是MySQLD ,又被叫做“ SQL的图层 ”,里面包含有 查询解析、分析、优化、缓存以及系统自定义的函数 (比如,时间、三角函数、加密函数等),主要能实现的功能有: 视图、触发器、存储过程等 。 2、 下层是为上层提供接口的各式各样的存储引擎 ,又被称之为“ 存储引擎图层 ”。存储引擎包含有很多底层存储引擎诸如 InnoDB、MyISAM、Memory ……., 已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击 它们被用于像

MySQL幻读 以及GAP、Next-Key Locking

China☆狼群 提交于 2020-01-26 05:39:23
什么是幻读 phantom The so-called phantom problem occurs within a transaction when the same query produces different sets of rows at different times. For example, if a SELECT is executed twice, but returns a row the second time that was not returned the first time, the row is a “phantom” row. 以上为MySQL官方定义,我们简单翻译下:幻读湖现在一个事务中,同一个查询语句在不同的时间返回了不同的结果。比如:一个select语句执行了两次,但是第二次返回的rows不是第一次返回的,那么这行就可以称之为幻读。 在数据库定义的四种隔离级别中最高隔离级别SERIALIZABLE_READ可以保证不出现幻读的问题。而RR(Repeatable Read)级别下,针对当前读,RR隔离级别保证对读取到的记录加锁 (记录锁),同时保证对读取的范围加锁,新的满足查询条件的记录不能够插入 (间隙锁),不存在幻读现象。 但是,严格意义上,间隙锁并没有完全解决幻读,比如如下: set session transaction

mysql查看表结构命令

丶灬走出姿态 提交于 2020-01-26 03:33:21
mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名; use information_schema select * from columns where table_name='表名'; 顺便记下: show databases; use 数据库名; show tables; 原有一unique索引AK_PAS_Name(PAC_Name)在表tb_webparamcounter中, 执行以下sql修改索引 alter table tb_webparamcounter drop index AK_PAS_Name; alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name); 若发现索引的逻辑不对,还需要再加一个字段进去,执行 alter table tb_webparamcounter drop index AK_PAS_Name; alter table tb_webparamcounter add UNIQUE AK_PAS_Name(PC_ID,PAC_Name,PAC_Value); 注意:这时的PC_ID,PAC_Name,PAC_Value三个字段不是FOREIGN KEY

Ansible自动化运维(四)playbooke之roles应用(部署apache和zabbix)

别说谁变了你拦得住时间么 提交于 2020-01-26 03:01:41
一、前言 关于roles的介绍   roles能够根据层次型结构自动装在变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用 include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种 机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中。   在某些复杂的场景中建议使用roles,代码复用度高:     1. 变更指定主机或主机组     2. 如 命名不规范维护和传承成本大     3. 某些功能需多个Playbook,通过includes即可实现 上一篇博客是关于playbooks的使用以及练习,相信可以体会到playbooks中,将所有的操作于模块全放到一个文件中,显得很乱,此时就有了roles。 其实roles的作用 就相当于将playbook拆分成一个个分开的文件,显示的更有结构化 roles目录结构及其作用   每个角色,以特定的层级目录结构进行组织 roles/project/ # 项目名称,有以下子目录 tasks / # 定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含 files/ # 存放由copy或script模块等调用的文件

【mysql时区问题】永久解决pycharm连接数据库报错Server returns invalid timezone.

独自空忆成欢 提交于 2020-01-26 02:44:42
文章目录 环境 问题 分析 解决方法 检查 环境 windows 10 MySQL 5.7 Pycharm 2019.2 问题 pycharm连接数据库报错信息如下: Server returns invalid timezone . Go to 'Advanced' tab and set 'serverTimezone' property manually . . 分析 查阅资料发现这都是因为安装mysql的时候时区设置的不正确 mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式; 在mysql中查看时区设置: show variables like '%time_zone%' ; 解决方法 找到mysql的安装目录下的my.ini文件, 使用notepad++打开, 在mysqld下加入如下代码: 注意一定要在 [mysqld] 之下加 ,否则会出现 unknown variable 'default-time-zone=+8:00’ default - time - zone = '+8:00' 之后重启mysql即可; 检查 再在mysql中查看时区设置: show variables like '%time_zone%' ; ok了,再重新连接pycharm的数据库 大功告成 来源: CSDN 作者: 汪雯琦 链接: https:/