数据库
文章平均质量分 77
浅汐王
这个作者很懒,什么都没留下…
展开
-
mongoDB4.x账户权限配置
创建不受限制的超级用户db.createUser({"user":"root","pwd":"root","roles":["root"]}); 创建admin超级管理用户use admin;db.createUser({user: "admin", pwd: "admin",roles: [ { role: "userAdminAnyDatabase", db: "admin"}]})修改 Mongodb 数据库配置文件auth=true重启mongo创建一个业务数据库原创 2020-07-31 17:42:42 · 70197 阅读 · 0 评论 -
mongoDB4.2.8备份恢复与导出导入
备份数据备份就是要保存数据的完整性,防止断电,病毒感染等等情况,使数据丢失。有必要的话,最好勤备份,防止数据丢失。创建备份目录:mkdir -p /bigdata/mongodb-4.2.8/mongodump语法:mongodump -h localhost:27017 -d dmp_phone -o /bigdata/mongodb-4.2.8/mongodump-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017-d:原创 2020-07-30 15:41:37 · 70769 阅读 · 0 评论 -
MongoDB4.x优化
MongoDB架构MongoDB是典型的C/S架构,数据库存储采用主从结构,应用发起的读写请求都落在主库上,如果是写入请求,主库提交之后,还会同步写入到对应的从库上,同步的具体方式是类似OpLog,主库+从库组成了一个副本集,是MongoDB最小的部署单位。同时,MongoDB还支持较为复杂的集群方案,为用户解决元数据的高可用,业务数据的冗余和灾备(副本集来保证),动态自动分片,动态自动数据均衡等问题。典型的集群架构如下图所示:上面的图表示的集群由两个副本集,一个配置服务器,两个Mong原创 2020-07-30 15:34:39 · 70822 阅读 · 0 评论 -
MongoDB4.0将支持多文档事务
背景在早期,我们说的MongoDB支持事务是指针对MongoDB的单文档级别,与我们MySQL等关系型数据库中的事务是不同的,那什么是单文档事务呢?db.username.update({'name': 'helei'}, {$set: {'age': 26, 'score': 85}})上述命令对username集合中,name为helei列的行进行更新,如果age更新为26,score由于宕机或其他原因导致更新失败,那么MongoDB则会回滚这一操作。单文档ACID的实现Mongo原创 2020-07-30 13:55:21 · 71569 阅读 · 0 评论 -
MongoDB4.2.8增删改查
pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>user实体类import lombok.AllArgsConstructor;原创 2020-07-14 09:15:43 · 70069 阅读 · 0 评论 -
MongoDB高级部分
1.关联关系 嵌入式关系建模 引用式关系2.数据库引用 DBRefs(自动参考) 手动参考 3.覆盖查询(是一个查询,本质上就是直接从索引中取出数据,不会对文档进行扫描) 1)查询中的所有字段都是索引的一部分 2)查询中返回的所有字段都在同一索引中 覆盖索引的示例: 1)创建复合索引 db.users.ensureIndex({gender:1,user_name:1}) 2)覆盖索引示例 db.users.find({gender:"M"},{user_name:1,_i.原创 2020-07-13 10:59:47 · 69508 阅读 · 0 评论 -
MongoDB初级部分
快速入门是跨平台、文档型(对象)的数据库(NoSQL),提供高性能,高可用和易于扩展。(Mongo工作在集合和文档上的一种概念)MongoDB 和 MySQL的对应关系:db(数据库) database(数据库) collection(集合) table(表) Document(文档的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式) BSON是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。 .原创 2020-07-10 17:04:33 · 70020 阅读 · 0 评论 -
记录MongoDB占用内存太大
原因:MongoDB为了优化本身的读写效率,将内存当作缓存,所以读写的次数越多,缓存就越大。默认值为 50% *(RAM - 1GB)或者 256MB,从MongoDB3.4开始,WiredTiger内部缓存默认使用默认值中较大的一个。解决办法:修改config/mongod.cfg配置dbpath=/data/app/mongodb4.2.8/data/rs1 #MongoDB数据安装目录logpath=/data/app/mongodb4.2.8/log/rs1原创 2020-07-08 17:49:17 · 70960 阅读 · 0 评论 -
MongoDB4.2.8副本集(复制集)环境搭建
背景1)主要为了解决SpringBoot集成MongoDB的事务问题2)实际使用还是要搭配分片以及副本集使用,不要仅使用副本集。副本集的特点1)主节点唯一主节点唯一,但是不固定(不确定的原因是:主节点挂了的话,会重新选举出一个主节点)。2)大多数原则大多数原则,即1/2原则,一个复制集集群中,如果有大于等于1/2的节点不可用的话,那么整个进群将不可写,只可读(注:实际上应该是投票权重的1/2。3)从库无法写入从库无法写入,使用root权限也不行,这一点与MySQL不同,M原创 2020-06-28 14:15:01 · 71400 阅读 · 1 评论 -
Linux以tar包方式安装MongoDB-4.2.8
下载安装包https://www.mongodb.com/download-center/community解压tar -zxvf mongodb-linux-x86_64-4.2.8.tgz创建目录,设置权限在根目录 / 下创建data/db目录,用于放置mongodb数据,并且给该目录设置权限sudo mkdir -p /data/dbsudo chown -R 自己电脑的用户名 /data 启动mongodb-4.2.8/bin/mongod客户端测试..原创 2020-06-16 11:34:50 · 70844 阅读 · 0 评论 -
Insert into select语句把生产服务器炸了
场景:使用MySQL存储千万级数据量并根据城市进行分表,从总表对分表插入数据时很慢很慢原因:在默认的事务隔离级别下:insert into t2 select * from t1加锁规则是:t2表锁,t1逐步锁(扫描一个锁一个)。解决方案:使用insert into tablA select * from tableB语句时,一定要确保tableB后面的where,...原创 2020-04-23 10:08:09 · 70210 阅读 · 0 评论 -
MySQL之auto_increment问题记录
概述在数据库应用中,经常用到自动递增的唯一编号来标识记录。在MySQL中,可通过数据列的auto_increment属性来自动生成。可在建表时可用“auto_increment=n”选项来指定一个自增的初始值。可用“alter table table_name auto_increment=n”命令来重设自增的起始值,当然在设置的时候MySQL会取数据表中auto_increment列的最大值...原创 2020-01-30 11:54:48 · 49332 阅读 · 0 评论 -
mysql5.7 datetime 默认值为‘0000-00-00 00:00:00'值无法创建问题解决
报错信息:ERROR 1067 (42000): Invalid default value for 'deleted_at'解决办法:使用root用户的登陆数据库1、查看sql_mode:select @@sql_mode;获得结果:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DA...原创 2018-11-23 14:27:21 · 357 阅读 · 0 评论 -
MySQL的InnoDB引擎的行锁和表锁
mysql常用引擎有MYISAM和InnoDB,而InnoDB是mysql默认的引擎。MYISAM不支持行锁,而InnoDB支持行锁和表锁。1.行锁和表锁2.行锁的类型3.行锁的实现1.行锁和表锁在mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁...原创 2018-10-28 01:07:52 · 331 阅读 · 1 评论 -
MySQL创建用户、授权用户、删除用户、查看用户
1.查看用户2.创建用户3.授权用户4.删除用户5.设置与更改用户密码6.撤销用户权限1.查看用户查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user;来查看有什么用户由于在linux下比较难看,因为格式比较乱,所以我用了 SQLyog这个软件登陆数据库来...原创 2018-10-28 00:39:47 · 330 阅读 · 0 评论 -
MySQL普通索引(BTREE索引)的使用
在mysql中,普通索引,也就是BTREE索引分两类,一个是单列索引 另一个是多列索引1.索引的作用:当一个数据表只有很少量的数据时,索引体现不了他的价值。但若是一个表有10w多的数据时,查找数据就要全表查找,最差要查找10w个数据,太慢了,若是用索引的话,就会大大减少时间,例如对 score字段做一个索引,索引会生成一个文件,查找数据就到索引文件中查找,又因为索引出来的数据是已经排好序的...原创 2018-10-28 00:27:25 · 8184 阅读 · 0 评论 -
MySQL的约束管理
constraint(约束)语句的用法:(选用)如用 constraint 创建设置主键约束:create table aaa( a_id int ,name varchar(18),constraint con_name1 primary key(id)); //创建aaa表,并把 id 设置为主键约束,并且约束名为 con_name //约束名在数据库中是唯一的,如果...原创 2018-10-28 00:18:50 · 173 阅读 · 0 评论 -
MySQL基本操作常用语句
库里面有表,表在库里面)/*-----------------------库操作-------------------------*/语句(一):显示所有数据库 show databases;语句(二):创建数据库create database aaa ; // 创建一个名叫 aaa的数据库语句(三):进入一个数据库use aaa; //进入一个名叫aaa的数据...原创 2018-10-28 00:17:44 · 163 阅读 · 0 评论 -
PostgreSQL小记
当前环境: PostgreSQL 9.5.1CentOS 6.5 1.查看当前客户端连接数#查询当前的连接的pidselect pg_backend_pid();#查看表结构,pg_stat_activity是一个系统视图\d+ pg_stat_activity #查看当前连接总数ps -ef|grep -v grep |grep postgres |gr转载 2017-10-07 15:55:24 · 483 阅读 · 0 评论 -
Linux下mysql的root密码忘记解决方法(三种)
MySQL密码的恢复方法之一:1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的Con原创 2017-09-30 16:18:35 · 245 阅读 · 0 评论 -
scala-mysql数据库资源池
package connectimport java.sql.{Connection, DriverManager}import java.util/*** mysql数据库连接池*/object MySqlPool {private val max = 8 //连接池连接总数private val connectionNum = 10 //每次产生连接数原创 2017-10-18 01:14:46 · 1075 阅读 · 0 评论 -
SQL基本语句
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 查询和更新指令构成了 SQL 的 DML 部分: SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据 SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除原创 2016-09-22 10:54:56 · 259 阅读 · 0 评论 -
rpm方式安装Mysql
rpm安装mysql的方式已经自带了mysql用户以及mysql用户组,不需要单独创建了a. 检查MySQL及相关RPM包,是否安装,如果有安装,则移除(rpm –e 名称)[root@localhost ~]#rpm -qa | grep -i mysqlmysql-libs-5.1.66-2.el6_3.x86_64[root@localhost ~]# yum -原创 2017-09-30 16:16:23 · 665 阅读 · 0 评论 -
tar包方式安装Mysql
1.Download and Check MD5[root@sht-sgmhadoopnn-01 ~]# cd /usr/local[root@sht-sgmhadoopnn-01 local]# wget https://downloads.mariadb.com/archives/mysql-5.6/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz原创 2017-09-30 16:28:14 · 929 阅读 · 0 评论 -
MySQL备份与恢复
为了保障数据的安全,需要定期对数据进行备份。备份的方式有很多种,效果也不一样。一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复。从而将损失降到最低。下面我们来了解一下MySQL常见的有三种备份恢复方式:1、利用Mysqldump+二进制日志实现备份2、利用LVM快照+二进制日志实现备份3、使用Xtrabackup备份一:实验环境介绍:系统介绍:CentOS6.4原创 2017-09-30 16:30:33 · 204 阅读 · 0 评论 -
十步完全理解 SQL
我们每天都在写 SQL 并且应用在开源软件 jOOQ 中。于是我想把 SQL 之美介绍给那些仍然对它头疼不已的朋友,所以本文是为了以下读者而特地编写的:1、 在工作中会用到 SQL 但是对它并不完全了解的人。2、 能够熟练使用 SQL 但是并不了解其语法逻辑的人。3、 想要教别人 SQL 的人。本文着重介绍 SELECT 句式,其他的 DML (Data Manipulatio转载 2017-10-10 23:02:27 · 75120 阅读 · 0 评论 -
MySQL的编译安装
1.Download and CheckMD5[root@hadoopcm-01~]# cd /usr/local[root@hadoopcm-01local]# wget http://mirror.lug.udel.edu/pub/mysql/MySQL-5.6/mysql-5.6.22-linux-glibc2.5-x86_64.tar.gz [root@hadoopcm-01 l原创 2017-10-13 15:22:45 · 370 阅读 · 0 评论 -
MySQL查看所有存储过程,函数,视图,触发器
1.查询数据库中的存储过程和函数方法一:select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE' //存储过程select `name` from mysql.proc where db = 'your_db_name' and `type` = 'FUNCTION' //函原创 2017-10-13 15:25:55 · 2833 阅读 · 0 评论 -
MySQL SQL语法
零、用户管理: 1、新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2、更改密码: >SET PASSWORD FOR name=PASSWORD('fdddfd'); 3、权限管理 >SHOW GRANTS FOR name; //查看name原创 2017-10-13 15:26:30 · 1656 阅读 · 0 评论 -
mysql5.6多实例配置
多实例简述在一台物理服务器上安装一套Mysql软件程序,创建多个Mysql实例,每个Mysql实例拥有各自独立的数据库、配置文件和启动脚本,多个Mysql实例共享服务器硬件资源(CPU,MEM,磁盘,网络)。可以将多实例形像的理解成一个房子里的多个房间,在房子里的浴室、厨房和客厅是公用资源。 多实例优劣优点: 1、 充分利用服务器富余硬件资源,节约了硬件成本;原创 2017-10-14 22:36:02 · 1253 阅读 · 0 评论 -
MySQL双主高可用架构之MMM实战
MMM简介:MMM即Master-Master Replication Manager for MySQL(mysql主主复制管理器),是关于mysql主主复制配置的监控、故障转移和管理的一套可伸缩的脚本套件(在任何时候只有一个节点可以被写入),这个套件也能基于标准的主从配置的任意数量的从服务器进行读负载均衡,所以你可以用它来在一组居于复制的服务器启动虚拟ip,除此之外,它还有实现数据转载 2017-10-14 22:45:15 · 343 阅读 · 0 评论 -
PIVOT函数快速实现行转列,UNPIVOT实现列转行
SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行我们在写Sql语句的时候没经常会遇到将查询结果行转列,列转行的需求,拼接sql字符串,然后使用sp_executesql执行sql字符串是比较常规的一种做法。但是这样做实现起来非常复杂,而在SqlServer2005中我们有了PIVOT/UNPIVOT函数可以快速实现行转列和列转行的操作。PIVOT函数,行转列 PIVOT函...原创 2018-03-28 19:32:16 · 1213 阅读 · 0 评论 -
MySQL的DDL语句
SQL分类: DDL:数据定义语言(create/drop/alter等等) DML:数据操纵语言(insert/delete/update/select等等) DCL:数据控制语言(grant/revoke等等) DDL:数据定义语言,就是对数据库内部的对象进行创建、删除、修改的操作语言,它和DML最大的区别是DML只是对表内数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。DD...原创 2018-03-28 21:30:13 · 2183 阅读 · 1 评论 -
MySQL乐观锁、悲观锁、共享锁、排它锁、行锁、表锁
我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)乐观锁乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突,在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。通常实现是这样的:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段...原创 2018-10-28 19:17:47 · 153 阅读 · 0 评论 -
Jdbc设置自动连接问题
setAutoCommit总的来说就是保持数据的完整性,一个系统的更新操作可能要涉及多张表,需多个SQL语句进行操作 循环里连续的进行插入操作,如果你在开始时设置了:conn.setAutoCommit(false); 最后才进行conn.commit(),这样你即使插入的时候报错,修改的内容也不会提交到数据库, 而如果你没有手动的进行setAutoCommit(false); 出错时原创 2016-09-22 13:57:43 · 1854 阅读 · 0 评论