
数据库
镜水灵动
读万卷书、行万里路、阅人无数、高人指路、贵人相助和自己去悟。
展开
-
canal构建实时索引(两种方式adapter与springboot)
一.canal概述与安装1.1 简述canal模拟mysql slave交互协议,伪装成mysql一个从节点,向mysql master发送dump协议,mysql master收到dump请求之后,开始推送binary log 给slave。canal解析binary log对象即byte流。1.2 安装1.2.1 canal.deployer安装(1)开启mysql bi...原创 2020-02-01 20:28:43 · 2107 阅读 · 0 评论 -
mysql B-tree索引与hash索引
一.mysql支持的索引类型 mysql的索引是在存储引擎层实现的,即使同一种索引在不同的存储引擎上也可能底层实现不同。 1.1 B-tree索引是我们最常见的索引。(1)特点:使用b+树结构存储数据。b+树结构特点:每一个节点都存储下一个节点的指针。这样可以方便叶子节点的遍历。每一个叶子节点到根节点的距离是相同的。并且所有叶子节点都是根据键值大小按顺序存放,并且节点直接通过指针来链...原创 2018-04-20 15:28:11 · 315 阅读 · 0 评论 -
mysql修改root密码
方法1: SET PASSWORD命令修改 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');方法2:用mysqladmin修改 mysqladmin -u root password "newpass" 已设密码: mysqladmin -u root password o...原创 2018-04-27 18:01:09 · 137 阅读 · 0 评论 -
解决linux部署项目后,第一次远程访问初始化数据源的时候很慢的问题
1.说一下背景:本地项目远程链接腾讯云数据库。2.问题:第一次访问的时候感觉很慢。查看控制台...{dataSource-1} inited...百度搜了一下。解决方法如下:(1)解决方法:修改mysql文件,my.ini增加如下代码:skip-name-resolve重启mysql服务(2)原因分析:(以下内容原文地址:https://www.cnblogs.com/ivictor/p/5311...原创 2018-05-26 08:42:16 · 3864 阅读 · 0 评论 -
分数排名[LeetCode]
1.问题:编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。2.解决方法:SELECT Score, ( SELECT count(DISTINCT Score) FROM Scores WHERE Score >= s.Score ) A...原创 2018-05-28 10:17:21 · 755 阅读 · 0 评论 -
mysql可以远程登陆本地登陆不了
1.环境描述:mysql 5.6.40 2.遇到的问题: mysql -u xxxx -p xxx 用户名密码远程可以登陆,但是本地cmd中执行登陆不了。 原因其实很简单,mysql中一个用户名为空的访问本地权限的字段,所有登陆时优先匹配了这一条,就无法登陆了。select user,host from mysql.user;3.解决方法#删除用户即可drop user ''@loca...原创 2018-06-05 13:06:53 · 4110 阅读 · 1 评论 -
centos7.4修改Mysql密码
1.vim /etc/my.cnf在[mysqld]下添加下面一句话:skip-grant-tables2.重启mysqlservice mysqld stopservice mysqld start3.输入mysql进入了mysql。然后选择mysql数据库: use mysql修改密码:UPDATE user SET Password = password ('xx...原创 2018-05-30 00:19:25 · 934 阅读 · 1 评论 -
mysql 批量插入判断是否存在,1.替换。2.忽略
1.常见的插入(1)insert into 插入数据库时会检查主键是否存在,存在会报错 (2)replace into 替换数据库记录,需要表中有主键或者unique索引,如果数据库已存在的数据,会先删除该数据然后新增。不存在的数据效果和insert into 一样。<insert id="batchInsert" parameterType="list" useGener...原创 2018-07-10 14:51:29 · 5162 阅读 · 0 评论 -
docker 安装mysql集群
5.安装docker①yum -y update yum install -y docker 安装docker②docker启动,关闭,重启service docker startservice docker stopservice docker restart②在线安装java镜像docker search java国外镜像仓库下载熟读慢,建议使用国内DaoCloud访问www.daoclou...原创 2018-07-05 23:52:53 · 771 阅读 · 2 评论 -
一条sql语句执行流程
6.1一条sql语句执行流程 (1)首先经过连接管理模块,由连接进程模块从线程池分配一个执行线程来执行本次请求。请求转发到用户模块进行权限校验;(2)然后由命令分发器进行分发,若是查询请求,先走查询缓存,看看是否命中,若命中,那么直接返回,记录日志,否则交给命令解析器执行。(3)命令解析器根据传过来的sql判断类型交给对应模块。例如查询优化器,表变更模块,表维护...原创 2018-11-24 23:49:05 · 1005 阅读 · 0 评论 -
数据库的备份
1.总括:对于任何数据库来说,备份都是十分重要的。主从复制不能取代备份。主数据库删除一条记录,从数据库也删除,我们不能使用从服务器上的数据来回复删除的数据。只能从备份中恢复。备份按照形式:分为逻辑备份和物理备份。逻辑备份的结果为SQL语句,适合于所有的存储引擎,但是花费时间较长。物理备份通常是对数据库目录的copy,对内存表只备份结构。话费时间短。备份按照内存又可以分全量备份和增量备份。全量备份只...原创 2018-04-18 19:00:04 · 266 阅读 · 0 评论 -
sql慢查询以及删除备份
1.删除重复数据,保留最早的一条。步骤:(1)查看是否存在重复的数据select order_id, product_id, count(*) from product_commentgroup by order_id, product_id having count(*) > 1(2)备份表 CREATE TABLE bak_t_order_180417 AS SELECT * FROM...原创 2018-04-17 20:07:51 · 211 阅读 · 0 评论 -
数据库索引规范
1.限制每张表上的索引量,建议单张表索引不超过5个。 索引并非越多越好!索引可以提高效率也可以较低效率。 索引可以提高查询效率,但是降低了修改和插入的效率。 mysql在优化查询时,会根据统计信息对每一个可以用的索引进行评估生成一个执行计划。若每一个索引都可以用于查询,那么增加mysql生成执行计划的时间,同样降低sql查询性能。2.禁止在表中每一列都建立索引。3.innodb是一个...原创 2018-04-14 19:38:04 · 3819 阅读 · 0 评论 -
数据库字段规范
1.优先选择符合存储需要的最小的数据类型:(1)将字符串转化为数字类型存储:以Ip地址为例:255.255.255.255。INET_ATON('255.255.255.255') = 4294967295INET_NTOA(4294967295)='255.255.255.255'节省更多存储空间。这样可以加载更多数据到缓存,提高命中率。(2).对于非负型数据来说,优先使用无符号整形来存储。表中...原创 2018-04-15 11:21:46 · 979 阅读 · 0 评论 -
数据库开发规范
1.建议使用预编译的语句进行数据库操作。 只传递参数,比传递sql语句更高效。 相同语句可以一次解析,多次使用,提高处理效率,还可以防止sql注入。2.避免数据类型隐式转换。隐式转换发生在where语句中,当列类型和参数类型不一致的时候就会出现。隐式转换可能导致索引失效。举个例子:select name, phone from user where id = '111'3.合理利用表上已有的索引而...原创 2018-04-15 14:35:16 · 220 阅读 · 0 评论 -
数据库操作行为规范
1.超过100万行的批量写操作,要多批次进行。 大批量写操作可能会造成严重的主从延迟。 大批量写操作会产生大量的日志。binlog日志为row格式时会产生大量的日志。 避免产生大事务操作。对表中大批量的数据进行锁定,从而产生阻塞。导致其他应用无法使用数据库,导致一系列 问题。2.对大表数据结构的修改一定要谨慎,会造成严重的锁表操作。尤其是生产环境时不能忍受的。 对于大表使用pt-onli...原创 2018-04-15 14:52:20 · 2798 阅读 · 0 评论 -
centos7安装mysql流程
环境CentOS 7.1 (64-bit system)MySQL 5.6.24CentOS 安装参考:http://www.waylau.com/centos-7-installation-and-configuration/依赖MySQL 依赖 libaio,所以先要安装 libaioyum search libaio # 检索相关信息yum install libaio # 安装依赖包 成...转载 2018-03-26 09:34:18 · 251 阅读 · 0 评论 -
mysql存储过程从表取数据存储到游标然后批量修改
delimiter $create PROCEDURE category()BEGIN DECLARE categoryName varchar(50); DECLARE parentId bigint(20); DECLARE itemId bigint(20); -- 遍历数据结束标志 DECLARE done INT DEFA...原创 2017-11-15 23:34:41 · 998 阅读 · 0 评论 -
MySQL行锁、表锁
一、SELECT FOR UPDATE二、使用InnoDB引擎三、Row-Level Lock 明确的的主键1.select * from user where id = 1 for update; 明确指定主键并且有结果集。2.select * from user where id = 0 for update; 明确指定主键并且无结果集。四、Table-Level Lock无明确的主键1....原创 2018-01-29 09:10:42 · 411 阅读 · 0 评论 -
mysql性能优化
Mysql性能优化1. 为什么是mysql5.6?Mysql5.6的性能远远高于历史Mysql版本。我的Mysql version 5.6.26。2. 什么是优化:(1) 优化是多方面的,包括查询、更新、服务器等。(2) 性能优化:资源占用率低,系统运转速度快。3. 怎么优化3.1传统三范式与冗余涉及 (1)三范式:(牺牲时间换空间) ①第一范式...原创 2017-08-12 09:36:42 · 272 阅读 · 0 评论 -
Sql执行计划解析
1.我们怎么知道sql执行效果怎样哪?我们需要查询sql的执行计划。mysql优化器是怎样执行我们的请求的。 explain select * from user where username = 'lai' and password = 'lai';2.首先通过mysql执行计划,我们可以知道sql如何使用索引。虽然我们在列上加了索引,但是sql执行过程中未必走索引。所以我们需要...原创 2018-04-17 13:23:30 · 1379 阅读 · 0 评论 -
数据库命名规范
1.在表关联时:若两个关联字段类型不同,那么会进行查询的时候会进行隐式的数据类型转换。这样会导致索引失效。2.所有数据库对象名称必须小写3.命名要做到见名知意,禁止使用mysql保留关键字。4.临时表以tmp_开头,备份表以bak_开头并以时间戳结尾5.所有存储相同数据的列名和列类型必须一致。6.mysql5.5之前myisam是默认的存储引擎。所有表都必须使用Innodb存储引擎。5.6版本之后...原创 2018-04-14 18:29:20 · 349 阅读 · 0 评论