数据库技术
文章平均质量分 77
kevin_zhuzj
做的了Java开发工程师也管的了项目。
展开
-
Centos7 离线安装mysql5.7并设置开机自启
最近需要在Centos7下安装下mysql,直接yum -y install的方法不太好使,就在官网下载了所有的依赖和离线安装包,安装成功,现在记录下流程:首先进入mysql官网的下载地址:https://dev.mysql.com/downloads/mysql/,然后在下载里面把os选择为Red Hat Enterprise Linux 7 / Oracle Linux 7 ,把os的版本选择为all。在下方的下载链接找到以下文件:mysql-community-client-5.7.19-转载 2021-03-26 11:17:13 · 453 阅读 · 0 评论 -
MySQL大表优化方案
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VAR转载 2020-11-09 08:41:55 · 308 阅读 · 1 评论 -
数据量很大,分页查询很慢,推荐个优化方案!
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。准备工作为了对下面列举的一些优化进行测试,下面针对已有的一张表进行说明。 表名:order_history 描述:某个业务的订单历史表 主要字段:unsigned int id,tinyint(4) int type 字段情况:该表一共37个字段,不包含text等转载 2020-11-05 17:40:31 · 150 阅读 · 0 评论 -
如何防止MySQL索引失效?
最近一直忙着处理原来老项目遗留的一些 SQL 优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢 SQL ,导致 MySQL 的 CPU 资源飙升,基于此,给大家简单分享下这些比较使用的易于学习和使用的经验。这次的话简单说下如何防止你的索引失效。再说之前我先根据我最近的经验说下我对索引的看法,我觉得并不是所以的表都需要去建立索引,对于一些业务数据,可能量比较大了,查询数据已经有了一点压力,那么最简单、快速的办法就是建立合适的索引,但是有些业务可能表里就没多少数据,或者表的使转载 2020-09-16 10:26:10 · 146 阅读 · 0 评论 -
explain都不懂,还说会SQL调优?
mysql中的explain命令可以用来查看sql语句是否使用了索引,用了什么索引,有没有做全表扫描。可以帮助我们优化查询语句。explain出来的信息有10列,文章主要介绍type、key、Extra这几个字段。演示中涉及到的表结构如下:CREATETABLE`dept_desc`(`dept_no`char(4)NOTNULL,`dept_name`varchar(40)NOTNULL,`desc`varchar(255)NOTNULL,P...原创 2020-07-02 09:10:54 · 160 阅读 · 0 评论 -
为什么大家都说 SELECT * 效率低?
面试官:“小陈,说一下你常用的SQL优化方式吧。”陈小哈:“那很多啊,比如不要用SELECT *,查询效率低。巴拉巴拉...”面试官:“为什么不要用SELECT *?它在哪些情况下效率低呢?”陈小哈:“SELECT * 它好像比写指定列名多一次全表查询吧,还多查了一些无用的字段。”面试官:“嗯...”陈小哈:“emmm~ 没了”陈小哈:“....??(几个意思)”面试官:“嗯...好,那你还有什么要问我的么?”陈小哈:“我问你个锤子,把老子简历还我!”-------------.转载 2020-07-01 09:45:39 · 1722 阅读 · 0 评论 -
MySQL 索引必须了解的几个重要问题
本文讲述了mysql索引必须了解的几个重要问题。分享给大家供大家参考,具体如下:1、索引是做什么的?索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。大多数MySQL索引(PRIMARY KEY、U...原创 2019-11-19 08:48:44 · 135 阅读 · 0 评论 -
一文搞清楚MySQL事务隔离级别
好久没碰数据库了,只是想起自己当时在搞数据库的时候在事务隔离级别这块老是卡,似懂非懂的。现在想把这块整理出来,尽量用最简洁的语言描述出来,供新人参考。首先创建一个表 account。创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB)。表的结构如下:然后往表中插入两条数据,插入后结果如下:为了说明问题,我们打开两个控制台分别进行登录来...转载 2019-11-05 08:42:33 · 101 阅读 · 0 评论 -
记一次神奇的 sql 查询经历,group by 慢查询优化!
一、问题背景现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下:我在测试环境构造了500万条数据,模拟了这个慢查询。简单来说,就是查询一定条件下,都有哪些用户的。很简单的sql,可以看到,查询耗时为37秒。说一下app_account字段的分布情况,随机生成了5000个不同的随机数,然后分布到了这500万条数据里,平均来说,每个a...转载 2019-10-31 09:44:42 · 242 阅读 · 0 评论 -
MySql在建立索引优化时需要注意的问题
设计好MySql的索引可以让你的数据库飞起来,大大的提高数据库效率。设计MySql索引的时候有一下几点注意:1,创建索引对于查询占主要的应用来说,索引显得尤为重要。很多时候性能问题很简单的就是因为我们忘了添加索引而造成的,或者说没有添加更为有效的索引导致。如果不加索引的话,那么查找任何哪怕只是一条特定的数据都会进行一次全表扫描,如果一张表的数据量很大而符合条件的结果又很少,那么不加索引...原创 2019-09-10 13:46:59 · 323 阅读 · 0 评论 -
这句简单的 sql ,如何加索引?颠覆了我多年的认知
不啰嗦,直接入正题。问题是这样的。请问下面的sql语句,要想加快查询速度,该怎么创建索引?以下,以mysql数据库为准。select * from test where a=? and b>? order by c limit 0,100结果可能会出乎你的意料。我们首先准备一下运行环境,然后按照最左前缀原则和explain关键字来进行验证。结果真是颠覆了我多年的认知。准备...原创 2019-09-10 13:28:38 · 133 阅读 · 0 评论 -
安装mysql5.7后无法启动,每次重启服务器后/var/run/mysqld 目录都需要手动去创建解决方案
鉴于很多童鞋反应,mysql5.7安装后出现无法启动,建立/var/run/mysqld并赋权mysql用户解决了启动的问题,但是重启系统后又出现无法启动的问题,导致/var/run/mysqld目录每次重启后都需要手动去创建并赋权mysql用户才能起到mysql,可以说,这是mysql5.7的一个小BUG,经过探索实践,现给出终极解决方案:首先申明,修改my.cnf没有用。mkdir...原创 2019-08-16 14:13:55 · 2982 阅读 · 0 评论 -
死磕java代码优化之数据库---MySQL 如何优化大分页查询?
一 背景大部分开发和DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询,搜索商品也需要分页查询。那么问题来了,遇到上千万或者上亿的数据量怎么快速的拉取全量,比如大商家拉取每月千万级别的订单数量到自己独立的ISV做财务统计;或者拥有百万千万粉丝的公众大号,给全部粉丝推送消息的场景。本文讲讲个人的优化分页查询的经验,抛砖引玉。二 分析在讲如何优化之前我们先来看看一个比较常见错误的写...原创 2019-08-07 09:54:31 · 362 阅读 · 0 评论 -
解决JAVA调用mysqldump备份数据库时文件为空的问题
今天客户打电话来说我们的系统备份的sql文件为空文件。这让我很凌乱,我们测试过滴,执行很成功嘛。可客户使用的时候确实是备份失败嘛 ,这是事实。 我东测试西测试,在本机咋滴还是没出现这样的问题;没办法装了个虚拟机,安装了和客户一样的操作系统 ,并且按照客户安装步骤进行部署。结果,神奇事情出现了,所备份的数据库文件确实是空的,最后是东找西找,又是百度又是谷歌的,还是没有解决。转载 2016-05-11 17:21:08 · 1933 阅读 · 0 评论 -
SQL语句级别的优化总结
第一部分:sql级别的优化:1、 SQL语句尽量都大写字母出现。2、 查询时,如果基表(from最后面的表),数据库语句处理from后面的语句时,是从右侧往左侧处理的,那么选择数据量最小的表作为基表,可加快查询速度,同时,如果三张表,中间的那个交叉表,作为基表。例如:A,1万条, B,10万条, C,100万条数据。 关联条件: A.id=B.id and C.sid=B.si原创 2016-10-18 16:06:55 · 11315 阅读 · 0 评论 -
MySQL性能优化的最佳21条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1.为查转载 2017-03-07 23:30:46 · 196 阅读 · 0 评论 -
Mysql 自动备份与恢复
自动备份MySQL 5.0有三个方案: 备份方案一: 通过 mysqldump命令,直接生成一个完整的 .sql 文件 Step 1: 创建一个批处理(说明:root 是mysql默认用户名, aaaaaa 是mysql密码, bugtracker 是数据库名)------------mySql_backup.bat-----------------------------转载 2017-03-15 14:19:46 · 2001 阅读 · 0 评论 -
我必须得告诉大家的MySQL优化原理
说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。 MySQL逻辑架构 如果能在头脑中构建一幅转载 2017-05-04 09:53:27 · 360 阅读 · 0 评论 -
Mysql推荐使用规范
一:基础规范1、使用InnoDB存储引擎支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高2、推荐使用utf8mb4字符集无需转码,无乱码风险, 支持emoji表情以及部分不常见汉字3、表、字段必须加注释方便他人理解字段意思。4、不在数据库做计算禁止使用存储过程、视图、触发器、Event。在并发量大的情况原创 2018-01-22 15:47:43 · 275 阅读 · 0 评论 -
mysql5.7 group by 查询问题
mysql5.6版本下 mysql5.7版本下查询结果居然不同,考虑到时数据库版本问题,很多人说让关闭全局变量设置only_full_group_by,本着新版本新适应,查找解决方法1.2.两种查询结果与mysql5.6语句一致,5.7的手册上但是还有不明白这里加上DISTINCT,确保唯一性安全性?但每条数据都是不同的,要好好看看5.7的手册。还有dist...转载 2018-08-29 11:32:11 · 1352 阅读 · 0 评论 -
linux下mysql中文乱码(中文问号)解决办法
安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下,只需修改其中的my.ini文件,重起后就生效了;所以先来看看linux下MySQL的数据库文件、配置文件和命令文件分别在不同的目录 : 1、数据库目录,其所创建的数据库文件...转载 2018-10-16 16:09:09 · 286 阅读 · 0 评论 -
为什么要在MD5加密的密码中加“盐”
盐(Salt)在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。以上这句话是维基百科上对于 Salt 的定义,但是仅凭这句话还是很难理解什么叫 Salt,以及它究竟起到什么作用。第一代密码早期的软件系统或者互联网应用,数据库中设计用户表的时候,大致是这样的结构: 1 2 3 4...转载 2018-11-21 16:02:37 · 1423 阅读 · 0 评论 -
Mysql中的转义字符
字符串是多个字符组成的一个字符序列,由单引号(“'”) 或双引号 (“"”) 字符包围。(但在 ANSI 模式中运行时只能用单引号)。例如:'a string'"another string"在一个字符串中,如果某个序列具有特殊的含义,每个序列以反斜线符号 (“/”)开头,称为转义字符。 MySQL 识别下列转义字符:/0一个 ASCII 0 (NUL) 字符。/'...转载 2019-01-14 10:16:33 · 19628 阅读 · 0 评论 -
mysql 5.6忘记root密码之后如何重新设置密码
1、首先net stop mysql 服务,并且切换到任务管理器,有与mysql有关的,最好关闭相关进程。2、运行cmd命令切换到mysql安装bin目录,执行mysqld --skip-grant-tables(注意后面没有分号)。3、此命令行窗口不要关闭,再重新打开一个新的命令行窗口。注意,这时有时会出现一个警告,不要理会即可。4、再次打开一个cmd新窗口。按上面方法运行至bin目原创 2016-03-30 11:14:17 · 486 阅读 · 0 评论