数据库
文章平均质量分 83
liangdu_Zuker
这个作者很懒,什么都没留下…
展开
-
一图看懂Spring事务传播的本质
可能有点标题党,当可以作为一种思路。总所周知,Spring事务传播有7种方式,我们经常会苦于记忆和理解。这是因为我们不理解他的本质,如下图:同一个线程里关于事务的上下文会记录着当前线程拥有的MySQL Client socket,每一个Socket只存在一个当前事务(后面会提到为什么)事务的传播行为本质上是,当前service方法根据当先线程上下文是否存在事务,以此决定后续针对事务后续操作的行为。最常见的行为,就是根据当前线程事务上下文决定是否创建新事务(如果有则,不做任务操作,等于跟当前线程的父方原创 2022-08-06 13:56:21 · 268 阅读 · 0 评论 -
count(*) 和 count(1)和count(列名)区别
count(*) 和 count(1)和count(列名)区别区别count(*) 所有记录count(1) 1表示主键,统计主键列(主键肯定非空的)count(列名) 统计非空列指标: 是否统计非空 (是否用索引,用了索引肯定是包含null列的)。总结起来,不统计null,肯定是性能差的count(列名),统计null肯定是count(1),count(*)也会被优化为count(1).这一点体现了【行数据库】对索引的重要性,以及对行约束是否Null的重要性。所以总的来说,行原创 2020-11-10 10:44:50 · 161 阅读 · 0 评论 -
innodb_flush_log_at_trx_commit参数的直白理解
innodb_flush_log_at_trx_commit 可以定义mysql的事务提交方式mysql写文件有2块缓存。一块是自己定义在内存的log buffer, 另一个是磁盘映射到内存的os cache。mysql可以 调用 flush 主动将log buffer 刷新到磁盘内存映射,也可以调用 fsync 强制操作系同步磁盘映射文件到磁盘。还可以同时调用 flush + fsync, 将缓存直接落盘。innodb_flush_log_at_trx_commit = 0 就是每秒调用.原创 2020-10-26 16:52:53 · 7030 阅读 · 0 评论 -
列式存储Clickhouse的学习总结
clickhouse学习先说性能根据网上提供的压测报告在机器性能最好的情况下(报告没有给配置)http://www.dbarun.com/clickhouse/clickhouse-distributed-table-performance-pdf/写入时25万每秒(算是副本同步时间,这里时按照3个分片2个副本来做压测)而查询则以列式存储的优势达到了PB级别的秒级查询。说说特点系统两个特点:第一,自动平衡分片。分片的目的是提高吞吐量。第二,自动副本高可用。副本的目的是为了高可用。总得原创 2020-10-26 15:20:55 · 432 阅读 · 0 评论 -
redis 内存淘汰机制等知识
基本性能指标used_memory 是Redis使用的内存总量,它包含了实际缓存占用的内存和Redis自身运行所占用的内存(如元数据、lua)。包括了物理内存数据和虚拟内存数据之和。used_memory_human 中的Human指给人看的数据,哈哈哈。used_memory_rss:是redis的工作内存,即存放在物理内存里的数据量。used_memory_peak 是 used_memory 的峰值。mem_fragmentation_ratio 是 物理内存 里的数据(包含了有内存碎片)原创 2020-08-27 16:04:31 · 1060 阅读 · 0 评论 -
从mysql执行顺序讲到存储引擎再讲到临时表
从mysql执行顺序讲到存储引擎再讲到临时表学习mysql的系统设计思想和性能特点sql的执行顺序FROM → JOIN → ON → WHERE → GROUP BY → HAVING → SELECT→ ORDER BY→ LIMIT这个查询执行顺序和算法有关from读取原数据Join则是对源数据进行关联输出(如果是非笛卡尔链接还会伴随着ON条件关联判断)输入和输出完成后,下一步就是进行修饰了。涉及WHERE条件过滤,GROUP BY的分组索引(类似字典树聚合),和HAVING过滤.原创 2020-06-02 12:07:31 · 226 阅读 · 0 评论 -
JDBC如何实现线程安全以及和连接池的关系
双亲委派模型,加载DriverManger时需要扫描所有Driver实现类,会找不到Driver实现类,此时基于SPI原理会从线程上下中拿到AppClassloader,然后从appclassloader中获取driver实现类,封装成driverInfo,加入registry到DriverManager.这些实现需要SPI接口和service声明文件的支持。如果不希望破坏双亲委派模型,则需要用class.forname先主动加载驱动类,然后加载drivermanager,再将driver注册..原创 2020-06-01 10:31:02 · 906 阅读 · 1 评论 -
spring事务传播级别
spring事务传播级别required经常错的,需要原子性的,如果上下文没有事务就不理会了,只顾着自己,是最简单的的事务,如字面意思。如果上下文有事务就共享一个事务,可以采用Required。默认的。supported不经常错的,同时不需要事务的可以使用supported。(少有的场景,建议采用not_supported代替,就是挂起上下文,以免影响性能。)mandatory希望原子性,...原创 2019-03-02 19:40:21 · 817 阅读 · 0 评论 -
区块链技术原理-简明的描述
其实大家对于区块链不需要太过于恐惧,或者觉得高端。目前区块链核心技术就两块:底层区块链,核心技术就是网络协议设计,共识算法设计,区块存储设计。再上面就是可编程虚拟机层(或者叫智能合约层),就是在区块链上嵌入一层可编程中间件,便于程序员在上面开发应用,俗称编写智能合约。其实基于区块链编写一个简单的lua虚拟机,对于知乎大牛不会太困难。再往上可以设计一些服务层,比如各类自定义服务接口,转载 2017-09-04 11:58:50 · 1325 阅读 · 0 评论 -
MySQL存储引擎InnoDB与Myisam的六大区别 Junn 发表于3年前 原 MySQL存储引擎InnoDB与Myisam的六大区别 收藏 Junn 发表于 3年前 阅读 594
MySQL存储引擎InnoDB与Myisam的六大区别Junn 发表于3年前 原MySQL存储引擎InnoDB与Myisam的六大区别摘要: MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、转载 2017-06-07 09:32:11 · 251 阅读 · 0 评论 -
redis缓存接口设计
# 这是Java的Redis客户端工具类 - 2016/12/15 caisz## 该模块包含2个主要文件: 包路径 com.keydak.utils.redis - 命令接口声明 IRedisUtils : 声明给外界使用的工具类接口 - 抽象工具类 AbstractRedisUtils : 统一的工具类实现模板## java Redis客户端拥有2类常用的实原创 2016-12-29 15:12:09 · 3785 阅读 · 0 评论 -
apache.common.dbutils的BeanHandler的“缺陷”?
先看一下BUG信息:异常: 16:46:57.472 ERROR - DbUtilsExecutor-find:Cannot create com.keydak.gateguard.database.bean.gategd.GateController: com.keydak.gateguard.database.bean.gategd.GateController Query: SELE原创 2016-11-17 09:38:36 · 1385 阅读 · 0 评论 -
JOTM介绍
JOTM介绍JOTM (Java Open Transaction Manager)是由ObjectWeb协会开发的功能完整的且开源的事务管理器。JOTM 提供了以下功能,有助于增强 WEB 应用程序:1.完全分布式事务支持。如果数据层、业务层、表示层运行在不同的 JVM 上,则有可能有一个全程的事务跨度这些JVM,事务的内容在RMI/JRMP 和RMI/IIOP 上传播。原创 2016-10-12 19:30:53 · 1000 阅读 · 0 评论 -
Atomikos
Atomikos Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器。Atomikos TransactionsEssentials 是一个为Java平台提供增值服务的并且开源类事务管理器,以下是包括在这个开源版本中的一些功能:l 全面崩溃 / 重启恢复l 兼容标准的SUN公司JTA APIl 嵌套事务l 为XA和非XA提供内置的JDBC适配器注释转载 2016-10-12 19:30:32 · 1455 阅读 · 0 评论 -
MySQL中的共享锁与排他锁
在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。共享锁(Share Lock)共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。原创 2016-10-10 19:16:02 · 375 阅读 · 0 评论 -
悲观锁思想和乐观锁思想
在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibe转载 2016-10-10 19:15:19 · 477 阅读 · 0 评论 -
innodb_log_file_size
innodb_log_file_size 在mysql 5.5和5.5以前innodb的logfile最大设置为4GB,在5.6以后的版本中logfile最大的可以设为512GB.innodb的logfile就是事务日志,用来在mysql crash后的恢复.所以设置合理的大小对于mysql的性能非常重要在5.5的版本中,default设置为5M.在新建的mysql服务原创 2016-10-10 19:14:54 · 1115 阅读 · 1 评论 -
#读mybatis注解有感#
读mybatis注解有感JDK动态代理的核心由两部分组成: invocationHandle 包含了代理接口 Java代码1. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable 动态代理类工厂 Proxy.newProx原创 2016-10-10 19:13:08 · 287 阅读 · 0 评论 -
使用DAO时发生空指针错误
2014-10-6 17:38:26 dao.daoImpl.CustomerDAO save严重: save failedjava.lang.NullPointerExceptionat dao.daoImpl.CustomerDAO.save(CustomerDAO.java:51)at test.CustomerDAOtest.testSave(CustomerDAOtest原创 2014-10-06 17:44:32 · 2494 阅读 · 0 评论 -
SQL语句错误
MySQL Error Nr.1064-You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'not null, mypassword varchar原创 2014-10-06 12:40:53 · 553 阅读 · 0 评论 -
数据转化工具
1.kattle(Bi的ETL工具)2.infa(Bi的ETL工具)3.datax(大数据ETL工具)原创 2016-10-29 19:31:58 · 597 阅读 · 0 评论 -
关于mysql事务行锁for update实现写锁的功能
关于mysql事务行锁for update实现写锁的功能读后感:用切面编程的理论来讲,数据库的锁对于业务来说是透明的。spring的事务管理代码,业务逻辑代码,表锁,应该是三个不同的设计层面。在电子商务里,经常会出现库存数量少,购买的人又特别多,大并发情况下如何确保商品数量不会被多次购买.其实很简单,利用事务+for update就可以解决.我们都知道for update实际上原创 2016-10-12 19:41:33 · 3469 阅读 · 0 评论