Mysql
饭一碗
Java工程师
展开
-
Mysq limit深度分页解决方案
有个机构基本信息表,数据量200多万,使用select * fromorg_basic_info limit2016582,100查询耗时10s,表结构如下:普通的limit m,n,m表示偏移量,n表示返回条数,当m偏移量很大时,就需要扫描过多的表数据,例如limit1000000,100,查询就需要扫描1000100条,然后舍弃掉不符合条件的前1000000条,效率自然也就低了。...原创 2020-04-23 17:50:02 · 1982 阅读 · 1 评论 -
mysql中将时间戳转换为指定日期格式from_unixtime
场景给某客户用的POC数据落地在我司的测试环境,有程序拉取数据解析后落地到mysql中,再导出excel给客户,由于数据量不大且是测试环境,故没有开发专门的导出接口,而是Navicat中进行select查询再导出结果集,其中有个"发布时间"、"创建时间"等时间字段都是存的13位时间戳格式,用bigint字段类型存储的,需要将这个13位时间戳转换成"yyyy-MM-dd HH:mm:ss"格式显...原创 2020-03-18 21:21:16 · 2208 阅读 · 0 评论 -
记录一次线上mysql事务隔离级别引发的思考
场景:我们公司在客户方(某证券公司)部署了几套程序,用来监听客户方内网kafka消息(kafka消息是我们公司写入的),一旦监听到消息便即时消费写入到相关的表中(一个主表及6个子表),然后客户部门再同步数据给他们的下游业务部门使用。某天客户来电说:"需要主表增加一个字段,用来存储与其相关联的子表数据,拼成一个json格式存储在主表字段中",原因是下游部门在使用数据的时候发现:比如,某个时刻A主表...原创 2019-10-25 15:19:45 · 2836 阅读 · 4 评论 -
mysql索引注意事项
1.模糊查询前导不会走索引select id,user_name,price_code from user_activity_info where user_name like '%zhang';如果非要使用前导索引的话可以借助Apache的Lucence索引工具2.字段默认值不要设置成null如果可以请设置为not null3.不要在SQL中对字段进行计算,这样会使索引失...原创 2018-06-14 11:01:07 · 345 阅读 · 0 评论 -
解决Group By语句报错:this is incompatible with sql_mode=only_full_group_by
今天在我的个人服务器上的Mysql中写了这么一条SQL语句:select id,name,link,passwd,original,type from movie GROUP BY link;执行竟然报错,报错信息如下:[2018-07-06 14:53:27.339] [000172] [个人线上数据库] [MYSQL]1055 - Expression #1 of ORDER BY clau...原创 2018-07-06 15:37:03 · 4737 阅读 · 0 评论 -
MySQL的BTREE索引和HASH索引
为什么要用索引?使用索引后减少了存储引擎需要扫描的数据量,加快查询速度 索引可以把随机I/O变为顺序I/O 索引可以帮助我们对所搜结果进行排序以避免使用磁盘临时表Mysql支持的索引类型:B-TREE索引与HASH索引,两者有不同的使用场景,下面来简单剖析下这两者的区别。CREATE TABLE act_info(id BIGINT NOT NULL AUTO_INCREMENT...原创 2018-08-17 17:45:08 · 7604 阅读 · 0 评论 -
简单理解mysql悲观锁和乐观锁
mysql层的锁机制,常用的就是乐观锁,用于判断并发修改问题,常在update语句中体现。乐观锁mysql的乐观锁通俗点理解就是在查询时取出数据的唯一标识,在修改操作时用这个唯一标识去判断该数据有没有被其他人修改过。常见的我们会在表设计时候冗余一个version字段,表示版本号的概念,在select时把这个字段也一并查询出来,update时的where条件加上这个version判断。例如在...原创 2018-04-18 11:11:05 · 832 阅读 · 0 评论 -
Mysql慢查询日志详解(slow_query_log)
引言Mysql中比较重要的日志包括二进制日志、relay_log(中继日志)、慢查询日志、redo_log、undo_log等,本篇来聊一聊mysql的慢查询日志。程序中定位一个执行慢的SQL可以根据慢查询日志,默认情况下,慢查询日志禁用,因为开启慢查询日志或多或少的会对mysql的性能产生一些影响。在慢查询日志功能开启时,只有SQL执行时间超过long_query_time参数值的的语句...原创 2018-11-03 16:13:38 · 9382 阅读 · 0 评论 -
避免SQL注入
重要声明:本文转自https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/09.4.md什么是SQL注入SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至...转载 2019-01-25 10:10:08 · 731 阅读 · 0 评论 -
项目中常用的19条MySQL优化(转载)
重要声明: 本文转自https://segmentfault.com/a/1190000012155267一、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选...转载 2019-05-09 20:22:13 · 604 阅读 · 0 评论 -
mysql开发规范
近日,无意间看到《京东 mysql开发规范》,发现里面的很多规范就是自己平时所参照的,特此取出里面的内容,以供参考,里面的部分说法过于绝对,小伙伴们谨慎参看。基本规范1、使用INNODB存储引擎 5.5以后的默认引擘,支持事务,行级锁,更好的恢复性,高并发下性能更好,对多核,大内存,ssd等硬件支持更好2、MySQL字符集统一使用UTF8,不会有转换产生乱码风险3、所有表都需要添加注释,单表数据量...原创 2018-03-27 11:56:51 · 358 阅读 · 0 评论 -
mysql字段类型
1、数字类型1.1 整型(精确值) -INTEGER,INT,SMALLINT,TINYINT,BIGINT,MEDIUMINT1.2 定点类型(准确值) -DECIMAL,NUMERIC1.3 浮点类型(近似值) -FLOAT,DOUBLE1.4 位值类型 --BIT1.5 数字类型属性1.6 超出范围和溢出处理参见https://dev.mysql.com/doc/refman/5.5...原创 2018-03-27 11:42:02 · 432 阅读 · 0 评论 -
centos7下MySQL安装和配置
yum安装的mysql版本是5.1,实际线上不会选择这么低的版本,所有我推荐你可以参考我的这篇博文:https://blog.csdn.net/fanrenxiang/article/details/79618119 比较好!1.更新yum包#yum update此时可通过如下命令查看#cat /etc/redhat-release 2.安装mysql ...原创 2017-04-15 15:01:39 · 3250 阅读 · 0 评论 -
Mysql主从复制-基于GTID的复制
前言mysql的复制能减轻数据库的读负载压力,同时可作为主库的数据备份。mysql的复制功能(异步,可能会导致同一时间点上数据不一致问题)是基于二进制日志增量进行的。建议在同一个IDC机房中进行复制,以减少网络带来的问题。mysql的复制格式主要有两种,SBR(基于SQL语句复制)和RBR(基于行复制),实际生产中一般建议采用基于行的复制方式,该种方式能较好的解决线上主从服务器复制不一致的...原创 2017-04-16 18:40:25 · 1086 阅读 · 0 评论 -
Mysql索引总结
于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。还是以WordPress来说,其多个数据表都会对经常被查询的字段添加索引,比如wp_comments表中针对5个字段设计了BTRE转载 2017-11-08 18:07:03 · 330 阅读 · 0 评论 -
Mysql二进制日志详解
引言注:图片取自网络提一下比较重要的几个:重做日志(Redo Log):重做日志是实现mysql事务的持久性的原理之一,当新增数据时,Redo Log会备份新数据,在事务提交前,只要持久化Redo Log即可,而不需要持久化实际数据,如果这时候mysql系统崩溃,虽然数据还没有持久化新增数据,但是Redo Log已经持久化了,系统可以根据Redo Log内容将数据恢复到最新的状态。...原创 2017-04-16 08:49:50 · 1418 阅读 · 0 评论 -
Mysql主从复制-基于日志点的复制
前言mysql的复制能减轻数据库的读负载压力。mysql的复制功能(异步,可能会导致同一时间点上数据不一致问题)是基于二进制日志增量进行的。同时建议在同一个IDC机房中进行复制,以减少网络问题带来的问题。mysql的复制格式主要有两种,SBR(基于SQL语句复制)和RBR(基于行复制),实际生产中一般建议采用基于行的复制方式,该种方式能较好的解决线上主从服务器复制不一致的问题,主从复制性能...原创 2017-04-16 16:51:53 · 952 阅读 · 0 评论 -
mysql日期、时间函数
文章转自:http://www.cnblogs.com/she27/archive/2009/01/16/1377089.html一、MySQL 获得当前日期时间 函数1.1 获得当前日期+时间(date + time)函数:now()mysql> select now();+---------------------+| now() |+---------------转载 2017-12-18 16:33:26 · 313 阅读 · 0 评论 -
centos上mysql的安装与配置
本篇博文安装的mysql版本是5.7.21,实际项目中线上mysql的安装也可以参照此篇博文。1、查看是否安装mariadb,若安装了则卸载掉;同时查看是否已经安装了mysql[root@localhost local]# rpm -qa | grep mariadb[root@localhost local]# rpm -e --nodeps ×××[root@localhost...原创 2018-03-19 21:49:32 · 866 阅读 · 0 评论 -
MySQL数据库结构优化(一)
数据库结构优化的目的数据库设计步骤数据库范式化设计物理设计阶段原创 2017-04-14 16:39:58 · 614 阅读 · 0 评论