
数据开发-mysql
开心果汁
大家好!我叫赖德发,欢迎您来到我的博客。
-
原创 【mysql 时间戳】mysql时间戳timestamp类型 时间不对
mysql数据库的系统时区,其实是分两种的,一种是mysql的全局时区,另外一种是当前会话的时区,如果当前会话不指定时区,就默认使用全局时区。执行如下命令,用于查看当前MySQL设置的时区信息:show variables like "%time_zone%";+------------------+--------+| Variable_name | Value |+-------...2020-03-21 10:50:041079
1
-
原创 【mysql 索引结构】innodb索引结构B+树
为什么Mysql中Innodb的索引结构采取B+树?开头,我们先回忆一下,B树和B+树的结构以及特点,如下所示:B树:注意一下B树的两个明显特点树内的每个节点都存储数据叶子节点之间无指针相邻B+树:注意一下B+树的两个明显特点数据只出现在叶子节点所有叶子节点增加了一个链指针针对上面的B+树和B树的特点,我们做一个总结(1)B树的树内存储数据,因此查询单条数据的时候...2020-02-23 15:35:26150
0
-
原创 【navicat 连接失败】出现1251- Client does not support authentication protocol 错误 解决方法
原因分析:原因是在mysql8之前的版本中加密规则为mysql_native_password而在mysql8以后的加密规则为caching_sha2_password。因此需要重新修改密码哦。解决方案如下:进入MySQL的bin目录,然后输入mysql -u root -p,输入密码我一开始安装的密码设置是123456回车接下来 修改用户密码执行下面两句即可。这里我把密码设置...2019-12-10 15:52:07259
0
-
原创 【mysql 清空数据】清除mysql表中数据
主要命令 有两种,一种是delete 方式,一种是 truncate table 方式。delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容, 使用truncate table也可以清空mysql表中所有内容。 效率上truncate比delete快, 但truncate删除后不记录mysql日志,不可以恢复数据2018-01-05 11:00:572658
0
-
原创 【mysql 进阶篇】学习 HAVING 子句的真正价值
HAVING 子句可能是 SQL 诸多功能中最容易被轻视的一个。不知道它的真正价值是一个很大的损失。可以说,HAVING 子句是集中体现了 SQL 之面向集合理念的功能。多年以来,笔者一直认为掌握 SQL 的思维方式的最有效的捷径就是学习 HAVING 子句的用法。这样说的原因是,与 WHERE 子句不同,HAVING 子句正是设置针对集合的条件的地方,因此为了灵活运用它,我们必须学会从集合的角度来2017-12-07 19:58:47289
0
-
原创 【mysql 数据库监控篇】数据库表空间大小监控
所用数据库占用空间大小如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:TABLE_SCHEMA : 数据库名TABLE_NAME:表名ENGINE:所使用的存储引擎TABLES_ROWS:记录数DATA_LENGTH:数据大小INDEX_LENGTH:索引大小所2017-12-07 15:01:083236
0
-
原创 【mysql 性能优化篇】性能配置
tmp_table_size:该参数用于决定内部内存临时表的最大值,每个线程都要分配(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值),如果内存临时表超出了限制,MySQL就会自动把它转化为基于磁盘的MyISAM表,优化查询语句的时候,要避免使用临时表,如果实在避免不了的话,要保证这些临时表是存在内存中的。现象:如果复杂的SQL语句中包含了group2017-12-14 11:44:54495
0
-
原创 【mysql 性能优化篇】优化MySQL服务器
优化mysql 服务器主要从两个方面来优化,一方面是对硬件进行优化,一方面是对mysql服务的参数进行优化。1、优化服务器硬件服务器的硬件性能直接决定着 MYSQL数据库的性能。硬件的性能瓶颈,直接决定 MYSQL数 据库的运行速度和效率。针对性能瓶颈,提高硬件配置,可以提高 MYSQL数据库的查询、更新的速度。介绍以下优化服务器硬件的方法(1)配置较大的内存。足够大的内存,...2017-12-05 17:48:35683
0
-
原创 【mysql 性能优化篇】优化数据库结构
方法1: 将字段很多的表分解为多个表。 通过这种分解,可以提高表的查询效率。对于字段很多,且有些字段使用不频繁的表,可以通过这种分解的方式优化数据库的性能。方法2: 增加中间表对于经常需要联合查询的表,可以建立中间表 提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。方法3: 增加冗余字段 合理加入冗余字段可以增2017-12-05 16:19:34245
0
-
原创 【mysql 性能优化篇】优化子查询
一、mysql子查询原理: MYSQL从4.1版体开始支持子查询,使用子查询可以进行 SELECT语句的嵌套查询,即一个 SELECT查询的结果作为另一个 SELECT语句的条件。子查询可以一次性完成很多逻辑上需要多 个步骤才能完成的SQL操作。子查询虽然可以使查询语句很灵活,但执行效率不高。执行子查询时, MYSQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句从临时表中查询记2017-12-05 10:17:585409
0
-
原创 【mysql 读写分离】10分钟了解读写分离的作用
1、what 读写分离 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、why 那么为什么要读写分离呢? 因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。 但是数据库的“读”(从oracle读102017-12-13 17:04:3171638
11
-
原创 【mysql 主从复制】掌握MySQL主从复制
1、主从复制原理Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当2017-12-13 15:44:24462
0
-
原创 【mysql 存储过程】数据库从菜鸟走向大神系列3
主要内容: 1、建表 2、写存储过程 3、写事件(自动化)mysql 建表语句:CREATE TABLE `nld_op_data_statistics_day` ( `id` int(11) NOT NULL AUTO_INCREMENT, `channel` varchar(16) NOT NULL COMMENT '渠道', `count_date` varchar(16)2017-11-24 10:37:11236
0
-
原创 【mysql 视图】Mysql视图的创建
什么是视图?视图是由查询结果形成的一张虚拟表。也就是我们可以理解为就是一种类似于表的数据对象。什么时候要用到视图?如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询。视图与表的关系?视图是表的查询结果,自然表的数据变了,会影响视图的结果。创建视图 CREATE VIEW v_person as SELECT * from persons;SELECT * from v_pers2017-12-11 16:36:061103
0
-
原创 【mysql 存储引擎】MySQL常用存储引擎及特点
SHOW ENGINES;SHOW VARIABLES LIKE 'have%';SHOW VARIABLES LIKE 'storage_engine'1.InnoDB存储引擎特点:1)给MySQL数据库提供事物,包括回滚,包括修复能力,多版本并发控制事物安全。2)支持外界元素。3)创建表结构是存储在“.fim”文件中,数据和索引,数据分别存储在innodb表空间中。4)缺点是读写读取效率比较低,2017-12-11 16:14:18410
0
-
原创 【mysql 性能优化篇】使用show status查看MySQL服务器状态信息
有些时候我们需要了解MySQL的服务器状态信息,譬如当前MySQL启动后的运行时间,当前MySQL的客户端会话连接数,当前MySQL服务器执行的慢查询数,当前MySQL执行了多少SELECT语句、执行了多少UPDATE/DELETE/INSERT语句等统计信息,从而便于我们根据当前MySQL服务器的运行状态进行对应的调整或优化工作。在MySQL中,我们可以使用SHOW STATUS指令语句来查看My2017-12-01 19:39:01355
0
-
原创 【mysql 累加、累减】MySQL累积求和,累加变累减
主要内容: 1、累加求和 2、累加变累减(挪位思想)创建表CREATE TABLE cum_demo(id INT,money INT,PRIMARY KEY (id));插入数据insert into cum_demo(id,money)values (1,10),(2,20),(3,30),(4,40);id money1 102 203 304 40累加求和方2018-01-02 16:21:2511230
1
-
原创 【mysql 数据表恢复】误删整张表数据,需要紧急回滚
应用案例误删整张表数据,需要紧急回滚闪回详细介绍可参见example目录下《闪回原理与实战》example/mysql-flashback-priciple-and-practice.mdtest库tbl表原有数据mysql> select * from tbl;+----+--------+---------------------+| id | name | addt2018-01-12 16:11:557232
0
-
原创 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock
[root@izbp1f0leha0lvmqfhigzpz mysql]# chown -R mysql:mysql /var/lib/mysql[root@izbp1f0leha0lvmqfhigzpz mysql]# /etc/init.d/mysqld startStarting MySQL. [ O...2018-03-21 12:17:494604
1
-
原创 【mysql 性能优化】系统配置优化
1、InnoDB 存储引擎 如果你还在使用 MyISAM 存储引擎,那么是时候转换到 InnoDB 了。有很多的理由都表明 InnoDB 比 MyISAM 更有优势,如果你关注性能,那么,我们来看一下它们是如何利用物理内存的:MyISAM:仅在内存中保存索引。 InnoDB:在内存中保存索引 和 数据。 结论:保存在内存的内容访问速度要比磁盘上的更快。下面是如何在你的表上去转换存储引...2018-03-21 10:50:57184
0
-
原创 【mysql 性能优化】避免临时表
查询当前创建临时表的大小###临时表show global status like 'created_tmp%';Variable_name ValueCreated_tmp_disk_tables 67842Created_tmp_files 1430Created_tmp_tables 327575257服务器对临时表的配置show variables whe...2018-03-14 16:14:502444
0
-
原创 【mysql 性能优化】设置mysql 连接超时自动断开该连接
目的: 设置mysql连接的空闲时间超过1小时后 MySQL自动断开该连接减少 MySQL 的 wait_timeout 属性的值show variables like '%timeout%'; set interactive_timeout=3600; set wait_timeout=3600; 运行结果:Variable_name Valueconnect_t...2018-03-14 14:00:242989
0
-
原创 【mysql 性能关键指标】获取mysql关键性指标
关键性指标:1、CPU利用率 2、内存利用率 3、磁盘空间 4、IOPS 5、QPS 6、TPS名词解释: IOPS:IOPS (Input/Output Operations Per Second),即每秒进行读写(I/O)操作的次数,多用于数据库等场合,衡量随机访问的性能。两大瓶颈主要体现在2个方面:吞吐量与IOPS。QPS: QPS - Queries Per ...2018-03-15 17:15:43643
0
-
原创 【mysql 存储过程】存储过程的应用--数据迁移和更新
数据迁移过程中,往往要更新数据,插入数据,此时运用存储过程,利用脚本自动化完成增删改查,业务逻辑,得心用手。简单存储过程例子1:CREATE DEFINER=`admin`@`%` PROCEDURE `update_busi_process`(IN idx int(10))beginSELECT workflow_id into @m1 from busi_process W...2018-02-08 17:45:05596
0
-
原创 【mysql 缓存】开启MySQL查询缓存
启用MySQL查询缓存可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%。查看查询缓存情况:mysql> show variables like '%query_cache%'; +------------------------------+----------+| Variable_name2018-02-06 16:54:331030
0
-
原创 【mysql 递归查询】Mysql中的递归层次查询(父子查询)
最近遇到了一个问题,在mysql中如何完成节点下的所有节点或节点上的所有父节点的查询?SELECT id,name,parent_id from b_company数据长这样子,id是父节点,parent_id 是子节点id name parent_id1 草根总公司 24 浙江金爱农网络科技有限公司 125 衢州分公司 2426 江山2017-12-14 16:14:113808
0
-
原创 【mysql 错误】1030 Got error 28 from storage engine
My /tmp was %100. After removing all files and restarting mysql everything worked fine.今天碰到数据库出错Got error 28 from storage engine查了一下,数据库文件所在的盘应该没事,应该是数据库用的临时目录空间不够,引用磁盘临时空间不够导致。解决办法: 清空/tmp...2018-02-09 09:52:26604
0
-
原创 【mysql 删除大表中的数据】如何删除100G以上的大表中的数据
两个删除策略: 1、慢的方法是写脚本定时任务带where的delete语句 慢慢删除 范围定小一点 锁的时间很短 客户端无感; 2、快的方法就是找个业务空的时候 新建表 程序往新表中插入 然后把老表中需要的记录让新表中插入;看到mysql文档有一种解决方案:https://dev.mysql.com/doc/refman/5.0/en/delete.html简单的翻译下:2018-01-17 15:43:3010488
0
-
原创 【mysql 索引】mysql 添加索引
主要内容: 1、什么是索引 2、添加索引sql 3、索引所用的算法 4、补充下概念 5、索引的缺点 6、经典案例一、什么是索引? 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建2017-11-24 11:35:282386
1
-
原创 【mysql 体系结构】了解MySQL体系结构
1、mysql 数据库体系结构图:MySQL 由以下几部分组成:1、Connectors:不同语言中与 SQL 的交互show VARIABLES like '%connection%'Variable_name Valuecharacter_set_connection utf8collation_connection utf8_general_ciextra_max_co2017-12-09 11:31:20873
0
-
原创 【mysql 触发器】触发器使用
1、了解什么是触发器?mysql 的触发器和存储过程一样,都是嵌入到mysql的一段程序,触发器 是由事件触发某个动作,这些事件包括,插入 ,更新、删除等语句。如果定义了触发程序,触发器就会触发执行相应的操作。触发器( trigger)是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用,而触发器的执行不需要使用CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就2017-12-08 20:04:34736
0
-
原创 【mysql 存储过程】数据库从菜鸟走向大神系列3
1、创建数据库create database cgjr2. 建表我们新建一张学生表和教师表如下:CREATE TABLE student( id INT NOT NULL AUTO_INCREMENT, first_name VARCHAR(10) NOT NULL, last_name VARCHAR(10) NOT NULL, sex VARCHAR(5) NOT NULL,2017-06-02 17:46:532571
0
-
原创 【mysql 事件】mysql事件的开启和调用
1、检测事件是否开启 show variables like 'event_scheduler';2.开启事件 set global event_scheduler = on;3.创建一个存储过程delimiter //create procedure test()beginupdate project set create_time = now();end;4.创建一个事件create e2017-06-02 18:04:325847
0
-
原创 【mysql 安装教程】MySQL5.7.18-下载安装教程
1、如何下载mysql 打开mysql官网下载链接网址: https://dev.mysql.com/downloads/选中第一个,点击download 下载进去之后,选择对应的系统和电脑版本(在这里,我选择的是Window系统64位的下载) 点击 download,选中 No thanks, just start my download. 下载完成。2、如何安装mysql从官网上下载2017-05-31 10:47:1321759
14
-
原创 【mysql 密码重置开启远程连接终极版】mysql 安装密码设置开启远程连接
my.ini 加入 skip-grant-tables进入 mysql -u root -pupdate MySQL.user set authentication_string=password('123456') where user='root' ;my.ini 关闭 #skip-grant-tables重启net stop mysqlnet start mysqlmysql -u root2017-06-02 17:24:241354
0
-
原创 【mysql 命令】Linux mysql 最常用的命令
一、连接MYSQL。 格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。 # mysql -u root -p 回车后提示你输密码,注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>2、连接到远2017-06-02 16:20:461696
0
-
原创 【mysql linux安装】Mysql centos安装教程
步骤:1)查看CentOS自带的mysql输入 rpm -qa | grep mysql2)将自带的mysql卸载3)上传Mysql到linux4)安装mysql的依赖(选做)yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6yum update libstdc++-4.4.7-4.el6.x86_645)解压Mysql到/usr/loc2017-06-02 16:08:523096
0
-
原创 【mysql 修炼之路】如何从菜鸟成为mysql 大神?
首先MySQL大多是跑在Linux环境上的,所以我们需要学习一下Linux的知识,最基础的需要了解: ■ Linux的安装及目录结构意义 ■ 常用的Linux命令,大概20多个 ■ 网络基本知识,进一步了解网关及路由相关概念,dhcp ■ 撑握一定的Linux网络服务,如果LAMP结构,dns, ftp 等其2017-06-02 15:35:344840
0
-
原创 【mysql 远程连接】关于远程连接服务器MySql的一些解决方案
在我们拿到一个新的服务器时,往往是系统自动生成的密码,不方便调试和远程维护。这里做第一步操作,修改mysql密码;mysql -u 要修改的用户名 -penter 密码mysql->use mysql;/*切换数据库(非root用户可无视)*/mysql->select user,password,host from user;/*查看用户组信息(包含密码)*/mysql->SET PASSWORD2017-06-01 16:15:061790
0
-
原创 【mysql 用户权限管理】mysql 权限管理学习
概述 用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户一、用户授权mysql> grant all privileges on *.* to 'yangxin'@'%' id2017-05-31 16:56:461273
0