MySQL
文章平均质量分 56
micro_hz
Engineer
展开
-
SQL入门经典前两节笔记
第一章节:SQL概要数据库SQL命令的类型:数据定义语言DDL数据操纵语言DML数据查询语言DQL数据控制语言DCL数据管理命令事务控制命令DDL: - create table - alter table - drop table - create index - alter index - drop index - create view - dr原创 2015-08-25 11:22:18 · 442 阅读 · 0 评论 -
MySQL聚合函数Group by理解
今天遇到一个问题是分组统计问题,表结构如下,我们的需求是按小时去聚合统计不同type和count_key的和。 这里可以用聚合函数:SELECT type,count_key,count,DATE_FORMAT(count_hour,"%H") as hour FROM statistic_hourly GROUP BY type,count_key,DATE_FORMAT(count_hou原创 2016-11-14 11:32:12 · 2673 阅读 · 0 评论 -
MySQL事务特性
数据库事务是一组连续数据操作,在多个数据库进行并发操作数据库的时候,如果不加以控制,会导致数据库出现不可预期的结果,可能造成脏读,不可重读,幻读的可能性。例如两个银行账户A、B.A转金额和B存入金额是两个操作,如果在中途出现异常,如果没有事务管理机制,就会导致不一致性的情况发生,数据丢失。因此事务的特点就有原子性,一致性,隔离性,持久性。一般称为数据库的ACID特性。Mysql数据库一般使用的引擎为原创 2017-02-16 19:59:42 · 608 阅读 · 0 评论 -
MySQL与Spring事务管理
数据库事务是保证在并发情况下能够正确执行的重要支撑,MySQL常见的数据库引擎中支持事务的是InnoDB,事务就是一系列操作,正确执行并提交,如果中途出现错误就回滚。事务要保证能够正常的执行,就必须要保持ACID特性,这在前面的文章当中有提到,本文也偏重spring的事务管理配置demo因此不做过多的概念介绍,网上的资料已经比较丰富。这是HeidiSQl截图查看不同引擎的特性: 数据库的事务的隔离原创 2017-03-02 20:08:21 · 4421 阅读 · 1 评论 -
CentOS 7 安装MySQL
自己搭建MySQL服务,网上教程很多,这个比较简单使用,引用了简书 九尾的分享 : http://www.jianshu.com/p/17fb10320d63wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm sudo rpm -ivh mysql-community-release-el7-5.noarch.rp原创 2017-07-09 22:23:40 · 498 阅读 · 0 评论 -
Python爬虫实战
爬虫是一个获取网络资源的好方法,之前或多或少有些接触,但是没时间去实战,最近抽时间把python学习了一下,python的网络编程是出了名的方便,一些库也十分的方便。所以这次就尝试写了写。爬虫本质上就是模拟浏览器去获取网站能够触及到的资源,这里就涉及到三个部分:html基础(前端)网络协议http基础python基础这三个部分构成了爬虫的主要技术基础,任何一个网页都脱离不了三个元素,html原创 2017-12-27 22:35:04 · 1645 阅读 · 0 评论 -
MariaDB远程访问设置
MariaDb是MySQL的一个分支,这是MySQL的创始人在MySQL被Oracle收购后fork出的一个版本,这个版本国内用的比较少,最近自己使用到这个但是在建立远程连接的过程中遇到一个很奇怪的问题就是按基本的MySQL的方式#skip-grant-tables绕过默认登陆,在数据库修改了root的密码并且更新root的host的来源从localhost到%,标示所有来源都可以登陆。 然后是...原创 2018-06-02 15:43:40 · 3501 阅读 · 2 评论 -
MySQL表迁移
在互联网应用中需求快速迭代,很多时候可能需要对DB进行变更操作,例如增删字段,当然一般来说不会删除字段,因为这存在极大的风险,相比较添加字段风险会小很多,但是也要注意避开流量高峰进行操作,因为虽然MySQL5.6之后支持Online DDL一般情况不会锁表,但是对于大数据量的字段仍然会存在锁表风险,因此需要注意。此次我遇到的是新老表主子分表的迁移问题。主要迁移的背景是:老表的字段不够通...原创 2018-09-25 13:06:10 · 1468 阅读 · 1 评论 -
常见SQL优化手段
慢SQL优化手段总结MySQL支持配置指定记录慢查的信息。SHOW VARIABLES LIKE 'slow%’可以去显示DB当前慢查的配置。slow_launch_time表示建立线程花费超过这个阀值,slow_launch_threads计数增加。slow_query_log是显示慢查日志是否打开。slow_query_log_file:日志保存路径。Long_query_...原创 2018-11-07 17:29:05 · 1389 阅读 · 0 评论 -
聚簇与非聚簇索引
我们平时创建的索引唯一键索引,复合索引,前缀索引都是非聚簇索引,有的也叫辅助索引(secondary index).其数据结构是B+树。在MySQL中,聚簇索引没有语句可以生成,在 InnoDB中,数据是按照主键的顺序来进行存储的。叶子节点就是存放每条记录的。由于表所有数据只能按照一个B+树进行排序,每个表只能有一个聚簇索引。在MySQL innoDB中,聚簇索引默认就是主键索引。如果没有...原创 2018-11-26 22:54:56 · 239 阅读 · 0 评论 -
一次物理表迁移实战
引言本是集团新零售战略重要一环,也是线上线上奔跑最快的业务部分之一,的仓储也是业界领先的系统,创造了很多新的零售玩法,例如加工仓,暂养仓与冷链仓都进行了新的探索。在业务不断扩张的同时,仓储系统也面临诸多考验,例如各种大促,到2018年上半年可以说是举步维艰,很多历史包袱让业务稳定性堪忧,业务需求的挑战让整个团队举步维艰。仓储团队痛定思痛开始了慢慢的架构升级的道路。关于仓储出库作业与出库单服务化...原创 2019-04-01 14:50:42 · 407 阅读 · 1 评论 -
关于MySQL文档间隙锁描述的疑问
背景项目发展很快最近接触了很多高并发下的代码规范,其中一个重要的点就是MySQL的锁竞争问题,其中一些问题非常的复杂,接下来抽时间系统的学习下MySQL锁的部分,虽然还不到源码的级别,但是希望深入的理解官方文档并给出对应的用例。这篇博客主要分析下间隙锁。Gap lock 间隙锁A gap lock is a lock on a gap between index records, or...原创 2019-08-05 17:44:33 · 486 阅读 · 1 评论 -
MySQL输出脚本文件到指定文件夹
我们产品执行需要一个定时的报表数据,因此我们需要编写一个数据库脚本给DBA,每个月初去执行然后导出相关的数据提交给相关方。这里主要练习了输出文件和时间函数:SELECT ci.instance_id AS creative_instance_id, ci.instance_name AS creative_instance_name, at.task_id AS task_id, a原创 2016-06-21 12:04:34 · 670 阅读 · 0 评论 -
使用缓存降低数据库查询频率
在写业务的时候遇到关联另一个实体类然后需要获取该实体类的相关属性的情况。如果在遍历外层对象的时候要去查询该对象,也就是循环嵌套查询,这样在面对该对象该字段可修改的可能性很小并该查询比较频繁的情况下考虑依靠缓存去降低数据库的负担。 例如我在循环处理广告位:// AdLocation类有一个mediaId属性,对应media表的IDfor (AdLocation adLocation : adLoc原创 2016-04-11 16:20:54 · 1043 阅读 · 0 评论 -
SQL入门经典3-8章节笔记
数据库范式 范式也叫规格化,规格化主要是去除冗余数据的指导方针。 在原始数据库里有些数据会存在不同的表里,这样会造成安全和冗余和查询更新的性能低下。 数据库的逻辑设计:根据外部实体和需求来设计,会存在数据冗余。 规格化处理: 第一范式:把原始数据分解到表里 第二范式:提取仅对主键有部分依赖的数据,把它们保存在另一个表里。 第三范式:删除表里不依赖于主键的数据。 表与字段的命名保持规范原创 2015-08-26 20:14:26 · 392 阅读 · 0 评论 -
查询结果遍历处理
第一种遍历,利用了哈希表这样查询了所有结果并放进了HashMap,这样不仅复杂而且查询的效率不高:PreparedStatement p = conn.prepareStatement("select * from test"); ResultSet rs = p.executeQuery(); HashMap<String,String> hm =原创 2015-08-13 09:14:35 · 1214 阅读 · 0 评论 -
MySQL数据库与表创建常用命令
系统环境path的路径下添加路径:%数据库路径%bin;这样可以让系统加载器自动从bin路径下面寻找mysql的工具。 使用如下命令可以进入登录验证页面:administrator>mysql -uroot -p也可以在mysql的文件夹内的my.ini文件的[mysqld]下面添加配置行:[mysqld]skip-grant-tables注意要删除前面的”#”号,此为注释标记,加上了会使配置失原创 2015-08-04 09:25:51 · 689 阅读 · 0 评论 -
构造url测试action与dao实例
从页面获取操作粒度和开始与结束时间,统计男女比例。最初打算在manager里面测试dao层,但是发现无论是在action里或则manager里都无法测试成功,我采用的junit测试,字面含义应该是单元测试。所以很可能当调用到其他单元的时候就无法达到想要的目的。 后来知道了测试应该是构造URL来传入参数来测试整个dao层和业务逻辑。我们是通过传入queryMap的Map类型的参数来实现查询的。在原创 2015-08-31 11:10:07 · 859 阅读 · 0 评论 -
java数据库连接过程
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String className)实现。 例如: try{ //加载MySql的驱动类转载 2015-08-06 18:45:40 · 533 阅读 · 0 评论 -
java中与mysql连接详细操作
这次我们做java与数据库的连接,参考上一篇文章。这节我们来一个实例。从student数据库中分别打印出每个对象的名字。数据库操作 进入数据库时候可以在系统环境变量的path目录下添加mysql\bin路径。这样打开cmd就可以直接使用mysql -uroot -p进行登录操作了。 建立数据库:create database micro;使用数据库:use micro;创建表:create原创 2015-08-06 20:29:18 · 1609 阅读 · 0 评论 -
jsp+servlet+tomcat简单的数据库查询项目
JSP负责页面展现,其实jsp也是一个java类,最开始java为了在显示页面不得不分别out.println()方法输出标签,那样将显示与业务逻辑混合在一起很不好维护也不简洁。因此诞生了jsp技术。jsp全称为java server page。它是在服务端运行的程序。java web最经典的还是jsp + servlet +mysql + tomcat。 接下来我们开始一个简单的java原创 2015-08-07 18:30:07 · 1797 阅读 · 0 评论 -
Mybatis中联合查询
实体类有Employee和Project,这次要通过联合查询,通过雇员的id查找雇员所做的项目,对应的数据库的字段为: 新建一个实体类project,属性并没和数据库对应:package micro.model;/**@author:micro_hz2015年8月20日 */public class Project { int id; //这里属性有Employee类原创 2015-08-20 11:08:26 · 484 阅读 · 0 评论 -
Mybatis的增删改查实例
Mybatis是一个非常轻量的ORM实现。感谢磊哥的相关资料,成功实现了数据库的增删改查。这里我们用Employee表:相应的字段和类型为: 创建实体类Employee:package micro.model;/**@author:micro_hz2015年8月19日 */public class Employee { int id; String name;原创 2015-08-19 15:38:26 · 1581 阅读 · 0 评论 -
mybatis+MySQL数据库返回插入记录的关键字方法
两次面试都被问及这个问题,最开始我完全不知所云,第一次没来得及解决这个问题,第二次被问到的时候心里十分的不快,打算好好研究一下这个问题。查阅相关资料,大概解决方案有这几个。数据库关键字自增,插入记录后用select last_insert_id()方法获得插入最后的关键字,但是这个方法是对表无关的,使用select max(id) +1取出来,然后再将其赋值给插入记录的关键字。或则是插入后再使用原创 2015-09-16 11:30:47 · 2149 阅读 · 0 评论 -
mybaits批量插入
对数据库的查询往往会消耗比较大的资源,因此我们在写代码的时候会侧重于在代码里去完成实体类的聚合而不是通过不断的查询。 最近在review code的时候发现了在遍历列表的循环查询数据库是十分消耗资源的。因此来考虑用更高效的方式去解决这个问题。 下面是问题: List<Long> locationList = locationGroupInfo.getLocationList();原创 2016-04-05 15:10:27 · 730 阅读 · 0 评论 -
插入数据库中文乱码问题
最近在做个web项目的时候发现一个关于乱码的问题总结一下,最开始在页面插入一条记录总是显示为??。我检查了spring过滤器并强制初始化开启,配置如下:<!-- 过滤器utf-8 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class> org原创 2016-04-27 10:02:22 · 2136 阅读 · 0 评论 -
使用binlog缓存异步化
在高并发的系统中关于缓存的重要性不言而喻,缓存在项目当中大量使用,扛住了大部分的查询流量,但也有很多点需要注意,最为典型的例子就是数据一致性问题,缓存击穿问题,缓存高可用问题等等。这次需要解决的问题是一个秒杀场景的高并发问题。关于缓存一致性问题缓存一致性就是说DB的数据与缓存的数据保持一致,理论上同一瞬间去变更两个值是最理想的,访问缓存跟DB是一致的,但是在分布式的情况下,无论如何操作,更新D...原创 2019-10-09 11:45:28 · 1962 阅读 · 1 评论