![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
长睡将军
归零者诗人,有诗有远方有嘴角向上的你。
展开
-
MySQL duplicate key update 新增修改的脚本
在日常工作中,很多场景下我们需要判断一条记录是新增还是修改。我们通常的做法是先根据主键查询,若存在值就修改,若不存在则新增。首先需要执行两段SQL,增加了数据库开销;其次需要我们人为去确定是否新增;我们可以修改插入脚本,让数据库根据逻辑自己判断是新增还是变更。原创 2022-09-23 21:29:00 · 291 阅读 · 1 评论 -
MySQL主备模式设置
https://www.cnblogs.com/miaocbin/p/13889783.htmlmaster创建用户 repl 密码 GreatSlave@123GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repl'@'172.16.20.125' IDENTIFIED BY 'GreatSlave@123';FLUSH PRIVILEGES;salveCHANGE MASTER TO MASTER_HOST='172.16.20.原创 2022-03-07 16:37:18 · 845 阅读 · 1 评论 -
Hana数据库,Java连接池
Hana 或者其他数据库原生的数据库连接池实现。原创 2022-01-24 11:23:36 · 1698 阅读 · 0 评论 -
MySQL查看表占用文件大小脚本
脚本如下:SELECT table_name AS TableName, TRUNCATE ( data_length / 1024 / 1024 / 1024, 2 ) AS DataLength, TRUNCATE ( index_length / 1024 / 1024 / 1024, 2 ) AS DataIndex, TRUNCATE (( data_length + index_length )/ 1024 / 1024 / 1024, 2 ) AS DataSum FROM原创 2020-10-22 16:33:09 · 256 阅读 · 0 评论 -
SQL语句replace into的用法
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。...原创 2020-09-14 18:28:11 · 1469 阅读 · 0 评论 -
explain查看MySQL sql性能
使用explain命令查看query语句的性能:原创 2020-02-17 12:02:17 · 124 阅读 · 0 评论 -
MySQL索引底层理解
索引的本质是:帮助MySQL高效获取数据的排好序的数据结构。数据结构有以下几种二叉树 红黑树 Hash表 B-Tree (MySQL 底层索引使用的是B+Tree)B+ Tree 是 B-Tree 的优化变种,B-Tree其实是多叉平衡树。需要控制好Tree的高度,Tree的高度越高查找的时间越长,因为要经历更多的磁盘I/O.所以需要横向扩展,横向存储更多的元素。MySQL...原创 2020-02-16 18:06:46 · 222 阅读 · 0 评论 -
修改一个表的字段数据
如何快速修改一个表的全部数据。脚本如下:UPDATE t_base_power_company_month_product_status AS tabAINNER JOIN ( SELECT id FROM t_base_power_company_month_product_status) AS tabB ON tabA.id = tabB.id SET tabA.crea...原创 2020-01-04 11:51:33 · 268 阅读 · 0 评论 -
MySQL查询数据字典脚本
mysql查询数据字典脚本USE information_schema;-- 切记这里不能忘掉SELECT T.TABLE_SCHEMA AS '数据库名称', T.TABLE_NAME AS '表名', T.TABLE_TYPE AS '表类型', T.table_comment as '表说明' , T.ENGINE AS '数据库引擎', C.ORDINAL_POSITI...原创 2019-12-27 10:15:38 · 268 阅读 · 1 评论 -
MySQL将查询结果list,转化为一个字段输出。使用GROUP_CONCAT()函数
select name from dw_dim_generator_unit where power_plant_id = 'EHBSXPTYDERDC0' select GROUP_CONCAT(name) as nemes from dw_dim_generator_unit where power_plant_id = 'EHBSXPTYDERDC0'原创 2019-12-11 11:17:15 · 5240 阅读 · 1 评论 -
Mybaitis 特殊字符处理
在Mybaitis 的mapper.xml 文件中,如果sql代码中有> ,<,>=,<= 。这些特殊字符需要转义。对应关系如下大于:>小于:<大于等于:>=小于等于:<=注意:后面的;号是需要写的。...原创 2019-12-03 16:35:41 · 251 阅读 · 0 评论 -
MySQL字符串拼接函数concat
CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一。SELECT concat('2019-12-1',' ',date_format(transaction_time, '%H:%i:%S'))原创 2019-12-03 16:30:04 · 146 阅读 · 0 评论 -
数据库乐观锁
乐观锁不是数据库自带的,需要我们自己去实现。乐观锁是指操作数据库时(更新操作),想法很乐观,认为这次的操作不会导致冲突(A用户操作的时,没有任何人操作该条记录),在操作数据时,并不进行任何其他的特殊处理(也就是不加锁),而在进行更新后,再去判断是否有冲突了。通常实现是这样的:在表中的数据进行操作时(更新),先给数据表加一个版本(version)字段,每操作一次,将那条记录的版本号加1。也就是先...原创 2019-03-05 22:45:31 · 1718 阅读 · 0 评论 -
数据库悲观锁
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的...原创 2019-03-05 22:50:14 · 581 阅读 · 0 评论 -
数据库优化问题需要考虑的方面
(1)、根据服务层面:配置mysql性能优化参数;(2)、从系统层面增强mysql的性能:优化数据表结构、字段类型、字段索引、分表,分库、读写分离等等。(3)、从数据库层面增强性能:优化SQL语句,合理使用字段索引。(4)、从代码层面增强性能:使用缓存和NoSQL数据库方式存储,如MongoDB/Memcached/Redis来缓解高并发下数据库查询的压力。(5)、减少数据库操作次...原创 2019-03-05 23:34:39 · 446 阅读 · 0 评论 -
数据库索引基础
1、索引定义数据库能加快数据库的查询速度。索引是对数据库表中一个或多个列的值进行排序的结构。添加索引的列和未添加索引的列相比索引有助于更快地获取信息。2、建立索引的优缺点:优点: 1).大大加快数据的检索速度; 2).创建唯一性索引,保证数据库表中每一行数据的唯一性; 3).加速表和表之间的连接; 4).在使用分组和排序子句进行数...原创 2019-03-07 23:35:18 · 329 阅读 · 0 评论 -
MyBatis缓存
一级缓存 一级缓存的使用不需要我们配置,一级缓存是基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache就将清空。 MyBatis 默认是开启一级缓存的,MyBatis会在一次会话中,一个SqlSession对象中创建一个本地缓存(lo...原创 2019-06-17 18:00:22 · 120 阅读 · 0 评论 -
Oracle空闲超时时间设置
远程连接oracle 会出现超时连接断开的问题,所以需要修改oracle配置。修改超时时间10分钟ALTER PROFILE DEFAULT LIMIT IDLE_TIME 10;查询修改后的超时时间其中IDLE_TIME的值就是设置的空闲超时时间。select resource_name,resource_type,limit from dba_profiles whe...原创 2019-06-27 15:38:10 · 12805 阅读 · 1 评论 -
对于大表的常见优化手段
当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:限定数据范围、读/写分离、垂直分区、水平分区当MySQL单表记录数过大时,数据库的CRUD性能会明显下降,一些常见的优化措施如下:1. 限定数据的范围: 务必禁止不带任何限制数据范围条件的查询语句。比如:我们当用户在查询订单历史的时候,我们可以控制在一个月的范围内。 2. 读/写分离: 经典的数据库...原创 2019-08-06 17:53:07 · 550 阅读 · 0 评论 -
MySQL 数据库引擎Innodb、myisam主要区别
mysql支持存储引擎有好几种,咱们这里主要讨论一下常用的几种存储引擎。Innodb,myisam。一、区别InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很...原创 2019-09-06 10:09:28 · 141 阅读 · 0 评论 -
SQLServer如何快速查看数据字典
SELECT表名=casewhena.colorder=1thend.nameelse''end,表说明=casewhena.colorder=1thenisnull(f.value,'')else''end,字段序号=a.colorder,原创 2017-08-03 16:58:11 · 2642 阅读 · 0 评论