数据库
文章平均质量分 83
一朵风中摇曳的水仙花
世人多愿锦上添花,却少有人雪中送炭
展开
-
SQL语句大全,所有的SQL都在这里
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'---开始 备份BACKUP DATABASE pubs TO testBack4、说明:创建新表cr...转载 2020-11-11 09:12:18 · 810 阅读 · 0 评论 -
Oracle事务隔离级别
一、事务四个性质(ACID)。1、原子性(Atomaicity) 一个事务是一个不可分割的单元。2、一致性(Consistency) 事务的原子性保证的事务的一致性。3、隔离性(Isolation) 三种现象: 1)、脏读 即读出其它事务未提交的数据。 2)、不可重复读一个事务,两个不同时间,读取的数据不同,被他人更新了。...转载 2020-11-11 09:12:34 · 397 阅读 · 0 评论 -
项目中常用的19条MySQL优化
一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 key_len列,索引长度 rows列,扫描行数。该值是个预估值 extra列,详细说明。注意常见的不太友好的值有:Using file转载 2020-11-11 09:13:15 · 140 阅读 · 0 评论 -
数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式(确保每列保持原子性)第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性...转载 2020-11-10 15:54:58 · 153 阅读 · 0 评论 -
mysql 用法 Explain
前言:explain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。注:本系列随笔如无特殊说明都MySQL版本都为5.7.22。1.explain的作用通过explain+sql语句可以知道如下内容:①表的读取顺序。(对应id)②数据读取操作的操作类型。(对应select_type)③哪些索引可以使用。(对应possible_keys)④哪些索引被实际使用。(对应转载 2020-11-10 14:54:38 · 133 阅读 · 0 评论 -
出现ORA-12541:TNS:无监听程序解决方案
这个问题一般是oracle服务的监听挂掉了:查询oracle监听的状态,如果挂掉了,重启即可。也有可能是数据库也挂掉了,那样的话需要重启数据库。 1.首先进入oralce用户:su - oracle2.查询当前数据库的状态ps -ef|grep ora_smon*如果发现当前没有oracle进程,则是oracle数据库挂了。如果数据库没有挂,应该显示信息如下所示:...转载 2019-02-19 18:52:24 · 2695 阅读 · 0 评论 -
关于读写分离,读延迟的问题如何解决
如果实现读写分离,但有些事务的逻辑里面,有可能后面的操作会对前面刚插入的一条记录做查询,这个时候如果是读从,就会读不到了?就算没有事务,如果一个进程先后有对同一条记录有写和读的操作,如果同步延迟了,后面的读还是旧的数据。有没有好的办法解决这个问题,除了提定部分操作读主。能按进程来吗,只要有写操作,就全部是主的,全部是读,才是从的? 答案:同一个事务中的读写都到主库操作。...转载 2019-01-26 21:51:33 · 3424 阅读 · 1 评论 -
实战:上亿数据如何秒查
最近在忙着优化集团公司的一个报表。优化完成后,报表查询速度有从半小时以上(甚至查不出)到秒查的质变。从修改SQL查询语句逻辑到决定创建存储过程实现,花了我3天多的时间,在此总结一下,希望对朋友们有帮助。数据背景首先项目是西门子中国在我司实施部署的MES项目,由于项目是在产线上运作(3 years+),数据累积很大。在项目的数据库中,大概上亿条数据的表有5个以上,千万级数据的表10个以上,百...转载 2019-01-21 16:02:21 · 606 阅读 · 0 评论 -
MySQL由一个双引号引发的血案
一、前言最近经常碰到开发误删除误更新数据,这不,他们又给我找了个麻烦,我们来看下整个过程。二、过程由于开发需要在生产环节中修复数据,需要执行120条SQL语句,需要将数据进行更新于是开发连上了生产数据库,首先执行了第一条SQLupdate tablename set source_name = "bj1062-北京市朝阳区常营北辰福第" where sou...转载 2019-01-21 14:28:25 · 293 阅读 · 0 评论 -
PK数据库 联合主键和自增主键
主键:主键是用来干嘛的?一般来说是为了建立唯一标识,建立索引的。主键的使用目的:a.为了保证数据查找唯一;b.提高存储效率和索引效率。索引:如果表的读操作少或者没有,索引效率会高,如果表的写操作较多或者大量,建立索引会慢。主键的设置方法有3种:一种是设置自增长主键,第二种是采用业务主键,第三种是生成唯一序列(使用uuid/guid);如何选择主键设置方式:必须按情况来...转载 2019-01-09 14:56:57 · 2766 阅读 · 1 评论 -
mysql中数据类型的取值范围
mysql整型bigint、int、mediumint、smallint 和 tinyint的语法介绍,如下:1、bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到18446744073709551615。一位为 8 个字节。2、int一个正常大小整数...转载 2019-01-23 19:23:56 · 495 阅读 · 0 评论 -
MySQL 性能优化,优化设计及设计原则解读
MySQL性能优化的目的 如何合理的设计数据库?什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化1. 关系明确(理清表之间的关系,可以通过冗余的方式提高效率)2. 节省空间(根据业务经验,设置字段长短)3. 提高效率 数据库表开发流程 原型=>逐步完善(表的设计也是如此) 数...转载 2019-01-23 19:18:46 · 193 阅读 · 0 评论 -
Google BigTable到底解决什么问题?
第三部分,Google BigTable。 BigTable,很多人对它耳熟能详,但它究竟解决什么问题呢?这是今天要聊的话题。 什么是BigTable?Google BigTable是一个分布式,结构化数据的存储系统,它用来存储海量数据。该系统用来满足“大数据量、高吞吐量、快速响应”等不同应用场景下的存储需求。画外音:本质上,BigTable是一个存储系统。 有Bi...转载 2019-01-18 15:32:51 · 528 阅读 · 0 评论 -
两个事务先后进行数据更新 第二次事务查询的数据是错误的
问题描述A方法包含B方法,A方法先更新数据,再执行B方法查询数据。AB方法均有事务管理。事务A事务B对某一账户进行更新具体逻辑就是先执行事务A开启事务获取账户余额查询得到x更新账户余额为x+1事务提交再执行事务B事务B里面也是按照这个逻辑来但是获取账户余额查询得到的是x而不是x+1解决方法检查事务隔离级别的设置。SELECT...原创 2019-09-20 11:16:54 · 2544 阅读 · 0 评论 -
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法满头大汗的宅鸟该怎么办呢? 1 2 3 4 5 mysql -u root -e"show processlist"|grep-i"Locked">> locklist.txt; forlineinawk'{print $1}...转载 2019-09-04 13:03:50 · 907 阅读 · 0 评论 -
数据库允许空值(null),往往是悲剧的开始(1分钟系列)
数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。数据准备:create table user (id int,name varchar(20),index(id))engine=innodb;insert into user values(1,'shenjian');insert into user values(2,'zhang...转载 2020-04-08 09:19:01 · 462 阅读 · 0 评论 -
数据库索引,到底是什么做的?
近期写数据库,不少朋友留言问MySQL索引底层的实现,今天简单聊一聊,少讲“是怎么样”,更多说说“为什么设计成这样”。问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又...转载 2019-08-20 09:35:20 · 104 阅读 · 0 评论 -
除了不要 SELECT * ,数据库还有哪些技巧
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。img程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。技巧1 比较运算符能用 “=”就不用“<>”“=”...转载 2019-08-19 21:56:55 · 384 阅读 · 0 评论 -
数据库不使用外键的 9 个理由
Piotr Kononow是一位业务分析师、软件架构师和项目经理,他拥有15年以上编程经验和背景(SQL,java,C++…)。他的专长是数据仓库/ BI和商业应用,这是他的一篇文章:最近我和几位DBA和架构师争论,他们对一些数据库没有外键感到震惊,并声称这是一种设计缺陷,是不应该发生的。如果发生必须马上改正。我想与他们争辩。我的经验告诉我,很多数据库(大多数我曾经使用的)不包含外键时并...转载 2019-08-19 21:24:40 · 448 阅读 · 0 评论 -
Linux下重启Oracle数据库
1、Linux下以Oracle帐户进入Linux系统。2、执行以下命令查看数据库监听器的状况:lsnrctl status3、执行以下命令停止数据库监听器运行:lsnrctl stop4、执行以下命令进入SQLPlus:sqlplus / nologconnect / as sysdbashutdown immediate5、执行以下命令退出SQLPlus:...转载 2019-07-23 10:19:50 · 225 阅读 · 0 评论 -
记住:永远不要在MySQL中使用UTF-8
最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrectstringvalue:‘\xF0\x9F\x98\x83<…’forcolumn ‘summary’ at row1我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串“转载 2019-07-23 09:22:13 · 121 阅读 · 0 评论 -
Mysql事物与Metadata lock 问题
Mysql事物与Metadata lock 问题环境说明: MySQL 5.6.16 OS:Linux RedHat 6.2 64bit1.问题描述目前新上一个使用MySQL数据库项目,在数据库中,每隔5分钟做truncate某个表操作,经常出现metadata lock锁等待,导致后面的对这个表的所有操作(包括读)全部metadata lock等待。严重影响了数据...转载 2019-07-22 20:13:20 · 198 阅读 · 0 评论 -
DDL操作
DDL操作DDL操作:一般用于① 创建用户;② 赋予权限;③ 撤销权限;④ 修改密码;⑤ 删除用户下面来看这些操作示例:--创建新用户:create user superdrew identified by superdrew;--赋予用户权限:grant connect,resource to superdrew;grant dba to superdrew;...转载 2019-07-22 19:53:11 · 255 阅读 · 0 评论 -
安装MySQL出现 Install/Remove of the Service Denied!
win10下 安装 MySQL命令下进入bin目录 执行mysqld.exe -install时,却出现Install/Remove of the Service Denied!把bin目录加入到系统环境变量也不行。解决方案:以管理员身份运行 cmd 即再次输入mysqld.exe -install显示Service successfull...转载 2019-07-24 09:40:59 · 487 阅读 · 0 评论 -
怎么设置mysql服务开机自启动
首先是我们将鼠标移动到如下图所示的计算机的图标上,点击右键,选择管理。 然后我们点击如下图界面中的服务和应用程序。 接下来可以看到它下面有一个我们的目标——服务。 服务的话它是按字母排列的,我们往下拉,找到Mysql服务。此时可以看到它是一个手动启动的状态。 在mysql服务上点击鼠标右键,选择属性。 然后跳出的如...转载 2019-07-24 09:37:21 · 21197 阅读 · 9 评论 -
windows下mysql初始密码设置
转载自:http://blog.csdn.net/ofreelander/article/details/508027801.my-default.ini 改名my.ini在解压的目录下面复制my-default.ini一份改名字为 my.ini。2.打开 Windows 环境变量设置, 新建变量名 MYSQL_HOME , 变量值为MySQL安装目录路径,在 环境变量 的 ...转载 2019-07-24 09:35:10 · 19481 阅读 · 3 评论 -
查看事务锁:innodb_trx + innodb_locks + innodb_lock_waits
记得以前,当出现:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,要解决是一件麻烦的事情;特别是当一个SQL执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束,DBA光从数据库无法着手找出源头是哪个SQL锁住了;有时候看看show engine innodb status, 并结...转载 2019-07-24 09:24:07 · 459 阅读 · 0 评论 -
mysql查看表结构的几种方式
在我第N次忘记如何查看表结构后,在网上查了一下后,看到有好几种查看表结构的方式,总结一下。以student(sid,sname,birthday,sex)的查看为例。【方式一】:desc student;语法:desc 表名;---------------------用于查看表整体结构【方式二】:describe student;...转载 2019-07-24 09:15:42 · 51492 阅读 · 0 评论 -
IntelliJ DataGrip入门操作
最近发现一款连接数据库的神器, 经过两天试用,感觉很吊的样子,特此记录下来, 以此来开始我的博客之旅, 也与广大猿友共勉之,话不多说直接上神器: DataGrip. 首先介绍DataGrip的初级应用:Data Grip的下载与安装jetbrains官网下载即可,地址如下: https://www.jetbrains.com/datagrip/?fromMenu;安装: Data Gri...转载 2019-07-24 09:10:40 · 1478 阅读 · 0 评论 -
数据库中为什么不推荐使用外键约束?
引言其实这个话题是老生常谈,很多人在工作中确实也不会使用外键。包括在阿里的JAVA规范中也有下面这一条:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 但是呢,询问他们原因,大多是这么回答的:每次做DELETE 或者UPDATE都必须考虑外键约束,会导致开发的时候很痛苦,测试数据极为不方便。坦白说,这么说也是对的。但是呢,不够全面,所以开一文来详细说明。...转载 2019-01-17 15:34:19 · 407 阅读 · 0 评论 -
sql的行转列(PIVOT)与列转行(UNPIVOT)
在做数据统计的时候,行转列,列转行是经常碰到的问题。case when方式太麻烦了,而且可扩展性不强,可以使用 PIVOT,UNPIVOT比较快速实现行转列,列转行,而且可扩展性强一、行转列1、测试数据准备 CREATE TABLE [StudentScores]( [UserName] NVARCHAR(20), --学生姓名 ...转载 2019-01-06 17:54:48 · 562 阅读 · 4 评论 -
数据库分库分表思路
一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...转载 2019-01-06 17:52:31 · 483 阅读 · 4 评论 -
excel 文件导入plsql时遇到anydac 未发现数据源名称如何处理
excel 文件导入plsql时遇到anydac 未发现数据源名称如何处理使用plsql的odbc导入器的时候会出现该问题: 原因是我是64位的系统!!! 解决方法: 1.运行C:\Windows\SysWOW64\odbcad32.exe,打开后如下图所示:2.点击添加,选择如下图所示Microsoft Excel Driver(*.xls) 3.点击完成,在弹出的对话框中的数据源名称后面转载 2017-09-13 11:16:56 · 5454 阅读 · 2 评论 -
如何使用PL/SQL工具将excel中数据导入oracle库
如何使用PL/SQL工具将excel中数据导入oracle库使用oracle数据库时,plsql是最佳的工具搭档,使用plsql可以更加方便的使用oracle数据库,本文介绍如何使用plsql将excel中的数据导入到Oracle数据库中。1.打开plsql之后,在工具栏点击【tools】–【ODBC Imoprter】2.选择导入文件的类型,这里是excel文件,所以选择Excel Files输入转载 2017-09-13 11:14:03 · 1254 阅读 · 0 评论 -
Linux 下 MySQL安装教程
1.下载安装包: 下载地址:http://dev.mysql.com/downloads/mysql/ 我们已经下载好了mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 直接用即可2.将安装包拷贝到/usr/local/下(建议此目录),然后解压 [root@jdap01 local]# tar -zxvf mysql-5.7.18-linux-g原创 2017-08-20 15:50:44 · 424 阅读 · 0 评论 -
批量打印查询条件
批量打印查询条件例如:select * from user_channel_info_0-user_channel_info_99 where channel_id=2 or channel_id=4 ;可以新建一个存储过程,打印查询条件:create or replace procedure test_002 isvSql varchar2(2000);vTable varchar2(50);...原创 2018-04-09 21:37:28 · 420 阅读 · 0 评论 -
关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快。一直有很大的疑问,有的人说count(*)更快,也有的人说count(列名)更快,那到底是谁更快,我将会在本文中详细介绍一下到底是count(1),count(*)和count(列明)的区别,和更适合的使用场景。 往常在工作中有人会说count(1...转载 2018-04-27 10:15:36 · 361 阅读 · 0 评论 -
sql case when then else end
(case(colume) when 'xxxx' then a when 'yyyy' then b else c end ) colume(或者别名)(CASE(w.ATTRIBUTE_name) WHEN '分行名称' THEN (select BRANCH_NAME from ONLINE_BRA_OFF_REC_BRA where e.ATT...原创 2018-04-27 10:40:44 · 162 阅读 · 0 评论 -
mybaits sql批量处理的几种方法总结
①批量插入 <!--批量插入并返回插入成功的条数--> <insert id="insertBranchReviseData" parameterType="java.util.List"> insert into SAS_BRANCH_REVISE_BATCH ( ID, ORG_ID, FIRST_LEVEL_BRANCH_N...原创 2018-04-27 10:43:33 · 337 阅读 · 0 评论 -
存储过程(一)批量添加字段
create or replace procedure add_modifierid_foruserchanhis is vSql varchar2(500); vSql4 varchar2(500); vTable varchar2(50);begin for m in 0..9 loop for n in 0..9 loop vTa...原创 2018-05-18 23:05:18 · 1245 阅读 · 0 评论