- 浏览: 456820 次
- 性别:
- 来自: 无锡
最新评论
-
ssbg2:
谢谢博主,不过这个datagrip的SQL格式化功能不是那么太 ...
DataGrip使用进阶-代码提示及格式化(二) -
ga-k8n-sli:
哥们,问一下,datagrip 双击包名打开 oracle 的 ...
DataGrip使用入门-安装及数据源管理(一) -
华子大叔:
麒麟俊,牛逼!
DataGrip使用入门-安装及数据源管理(一) -
wyz_jiang:
写的真是极好的,排版在清晰一点就好了!
(一)jvm内存模型概览 -
ywu:
Tyrion 写道activemq的官方文档给出了这个配置的说 ...
ActiveMQ Failover broker url顺序
文章列表
maven是一个优秀的跨平台项目构建工具。项目构建上文也提到,包括项目的创建、编译、测试、打包、部署等。maven不仅仅是一个构建工具,它还是一个依赖管理工具和项目信息管理工具。依赖简单理解就是项目用到的第三方j ...
rabbitmq 添加用户时报如下错误
Error description: {could_not_start,rabbit, {notsup, [{crypto,sha256,1,[{file,"crypto.erl"},{line,857}]}, {rabbit_password,hash,2, [{file,"src/rabbit_password.erl"},{line,34}]}, {rabbit_auth_backend_inte ...
今天同事在测试spring事务回滚的时候,发现事务回滚不了,使用的spring+mybatis,配置如下:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 基本的数据库连接配置 -->
<property name="user" value="${jdbc.username}"></property>
<property name=" ...
最近工作中遇到一个变态的报表查询需求,为了简化业务需求,说明如下:
CREATE TABLE public.book (
bookid INTEGER NOT NULL,
bookname CHARACTER VARYING(255) NOT NULL,
authors CHARACTER VARYING(255) NOT NULL,
info CHARACTER VARYING(255) NOT NULL,
comment CHARACTER VARYING(255) NOT NULL,
year_publication DATE NOT NULL ...
从本质上说,数据库就是数据的集合,具体到计算机上系统上,数据库可以是磁盘上一些文件的集合或者一些内存数据的集合。
常见的MySql登数据库,其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的 ...
group by优化
默认情况下,mysq对所有的group by进行排序,这与在查询中指定order by类似,如果想避免排序引起的效率降低,可以使用order by null禁用排序
有些情况下可以使用join来代替子查询,因为使用join,mysql不需要在内存中创建临时表
如果想在含有or的查询语句中利用索引,or之间的每个条件列都必须用到索引
datagrip提供了一个功能强大的编辑器,实现了notpad++的列编辑模式
1、多光标模式
在编辑sql的时候,可能需要同时输入或同时删除一些字符,按下alt+shift,同时鼠标在不同的位置点击,会出现多个光标
2、代码注释
选中要注释的代码,按下Ctrl+/或Ctrl+shift+/快捷键,能注释代码,或取消注释
3、列编辑
按住键盘Alt键,同时按下鼠标左键拖动,能选择多列,拷贝黏贴等操作
4、代码历史
在文本编辑器中,邮件,local history,show history,可以查看使用过的sql历史
命令历史
1、变量重命名
鼠标点击需要重命名的变量,按下Shift+F6快捷键,弹出重命名对话框,输入新的名称
2、自动检测无法解析的对象
如果表名、字段名不存在,datagrip会自动提示,此时对着有问题的表名或字段名,按下Alt+Enter,会自动提示是否创建表或添加字段
3、权限定字段名
对于查询使用表别名的,而字段中没有使用别名前缀的,datagrip能自动添加前缀,鼠标停留在需要添加别名前缀的字段上,使用Alt+Enter快捷键
4、*通配符自动展开
查询的时候我们会使用select *查询所有列,这是不好的习惯,datagrip能快速展开列,光标定位到*后面,按下Alt ...
1、关键字导航:
当在datagrip的文本编辑区域编写sql时,按住键盘Ctrl键不放,同时鼠标移动到sql关键字上,比如表名、字段名称、或者是函数名上,鼠标会变成手型,关键字会变蓝,并加了下划线,点击,会自动定位到左侧对 ...
索引的目的在于提高查询效率。mysql中主要包括以下几种索引:
主键索引
唯一索引
普通索引
全文索引
主键索引:
一张表的主键自动会使用主键索引,主键索引只有一个,主键索引可以在创建表的时候添加,如
CREATE ...
解决问题的一般思路是:发现问题,找到问题的原因,根据原因因地制宜解决。定位到了执行慢的sql语句后,接下来就要分析语句为什么执行慢。
mysql服务器执行sql语句是一个复杂的过程,大致流程如下:
1、接收客户端发送的sql语句;2、对于查询语句,服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果,否则进入下一阶段;3、进行SQL解析、预处理,在优化器生成对应的执行计划;4、mysql根据优化器生成的执行计划,调用存储引擎的API来执行查询;5、将结果返回给客户端。
也就是说,mysql服务器不是直接执行我们写的sql语句的,而是要对其进行优化,那如果能知道一些mysq ...
如果我们在优化过程中能找到那些sql的执行拖慢了速度,就能有针对性的去优化的定的sql语句,做到事半功倍。
先来看几个跟慢查询相关的指令及配置
mysql服务端有几个跟慢查询相关的配置:
slow_query_log:是否记录慢查询日志
long_query_time:执行多长时间的sql语句算慢(不一定是查询),默认10s
log_slow_queries:慢查询日志文件位置(5.6及以上版本mysql使用slow-query-log-file参数)
查看慢查询时间
show variables like 'long_query_time';
默认慢查询时间是1 ...
经济基础决定上层建筑,如果数据库表设计就存在先天缺陷,后期优化将会十分困难,因此,在创建数据库时就需要遵循一定的原则,基本的,表设计需要满足三范式。
第一范式:第一范式是对属性的原子性约束,要求列具有原子性,不可再分解(关系型数据库自动满足一范式);
第二范式:第二范式是对记录的唯一性约束,要求表中的记录具有唯一性;
第三范式:第三范式是对字段冗余性的约束,要求字段没有冗余。
数据库设计的其他一些原则,可以参看这边文章
11 个重要的数据库设计规则
说明:本系列博客根据传智播客韩顺平老师讲解的[第二版Mysql优化]视频教程整理而来,里面加入了一点自己实际操作中遇到的问题、解决方法等。
mysql优化大致可以从以下几个方面着手:
1、表设计合理
2、慢查询定位
3、添加适当索引(普通索引、主键索引,唯一索引,全文索引)
4、分表(水平、垂直分割)
5、读写分离
6、存储过程
7、mysql配置优化
8、mysql服务器硬件升级
9、定时清除不需要的数据,定时进行碎片整理(MyISAM)
下面份篇讲述各优化细节。