数据库
文章平均质量分 57
、小H
这个作者很懒,什么都没留下…
展开
-
MYSQL-show Profile诊断SQL以及配置优化
mysql 配置优化细节以及使用show profile 工具诊断sql原创 2022-07-19 21:45:00 · 258 阅读 · 0 评论 -
ShadingShereJDBC使用遇到的坑
项目场景:spring boot引入shadingShere-jdbc正常启动,程序运行时SQL会报错问题描述::shadingshere 4.0.0-RC1 版本,使用此版本之前,程序一直运行正常,当我研究到shardingsphere的事务的时候,引入 sharding-transaction-spring 架包(3.1.0)版本,结果shadingshere-jdbc执行SQL时就报错了@Override public void run() { bytes = mmInStrea原创 2021-11-19 10:04:49 · 482 阅读 · 0 评论 -
ShardingSphere-JDBC
优点: 客户端分库分表-和业务代码无缝粘合引入jar配置即可定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直...原创 2021-10-29 00:48:09 · 312 阅读 · 0 评论 -
Spring声明式事务不生效场景
场景一Service方法抛出的异常不是RuntimeException或者Error类型,并且@Transactional注解上没有指定回滚异常类型。对应的代码例子为:@Servicepublic class UserServiceImpl implements UserService { private final UserMapper userMapper; public UserServiceImpl(UserMapper userMapper) {原创 2021-07-19 20:17:45 · 788 阅读 · 1 评论 -
MY.CNF参数说明
[mysqld]server-id=513306 # Mysql唯一标识,一个集群中唯一;port=3306 # 服务端口,默认3306user = mysql # 启动用户,建议用户mysqlbind_address= 0.0.0.0 # 绑定的IP地址,建议使用具体地址basedir=/mysql/...原创 2021-07-05 15:09:16 · 245 阅读 · 0 评论 -
MYSQL-IO过高解决方案
1、日志产生的性能影响:由于日志的记录带来的直接性能损耗就是数据库系统中最为昂贵的IO资源。MySQL的日志包括错误日志(ErrorLog),更新日志(UpdateLog),二进制日志(Binlog),查询日志(QueryLog),慢查询日志(SlowQueryLog)等。当然,更新日志是老版本的MySQL才有的,目前已经被二进制日志替代。在默认情况下,系统仅仅打开错误日志,关闭了其他所有日志,以达到尽可能减少IO损耗提高系统性能的目的。但是在一般稍微重要一点的实际应用场景中,都至少需要打开二进制日原创 2021-06-28 14:27:24 · 1667 阅读 · 0 评论 -
MySQL_Case When遇到的坑
关于insert into tableA (字段1....字段N) select * from tableB使用Case When 插入遇到的坑第一种 Case 后接 字段名 (可以查询tableB的数据出来,也可以插入tableA)case tddp.WINNING_BIDDERwhen '中国电信' then '12'when '中国移动' then '10'when ''中国联合网络通信' then '11'else ''end as TENDER_COMPANY,原创 2021-04-13 16:33:06 · 1037 阅读 · 0 评论 -
MySQL快速复制一张表
复制一张表,方法有很多种。一、最简单的方法:create table t2 as select * from t1;二、逻辑导出:1、mysqldump逻辑导出mysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info --single-transaction --set-gtid-purged=off test01 t2 --where='c1>4' --result-file=/mysql/backup/t2原创 2021-04-13 09:57:09 · 1308 阅读 · 0 评论 -
通过logstash将关系型数据库数据同步到ES
input { # 多张表的同步只需要设置多个jdbc的模块就行了 jdbc { # mysql 数据库链接,shop为数据库名 jdbc_connection_string => "jdbc:mysql://localhost:3306/库名称?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC" # 用户名和密码 jdbc_user => "root"...原创 2020-11-02 19:40:44 · 626 阅读 · 0 评论 -
mysql的sql_mode关于date的两个参数值NO_ZERO_DATE和NO_ZERO_IN_DATE
STRICT_TRANS_TABLES: 在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制 NO_ZERO_IN_DATE: 在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。 NO_ZERO_DATE: 在严格模式,不要将 '0000-0...转载 2020-10-26 18:42:46 · 5005 阅读 · 0 评论 -
mysql中将多行数据合并成一行数据,通过GROUP_CONCAT函数
一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句:1 SELECT am.activeId,m.modelName 2 FROM activemodel am 3 JOIN model m 4 ON am.modelId = m.modelId 5 ORDER BY am.activeId查询出的列表为图1所示:修改过后的sql语句,查询后如图2所示:1 S原创 2020-06-19 13:41:18 · 878 阅读 · 2 评论 -
mysql delete报错问题解决
在MySQL中,写SQL语句的时候 ,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误,它的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值。1、数据准备product表数据如下:laptop表数据如下:2、要求:#删除所有不生产打印机厂商生产的笔记本电脑第一步:对aptop表进行操作操作没有问题,按照本原创 2020-06-05 13:47:55 · 1393 阅读 · 0 评论 -
MySQL 同表一个字段赋值给另一个字段
1.将同一个表中的一个字段的值复制给另一个字段UPDATE t_user SET signed_time = create_time 2.将同一个表中两个类型一样的字段的值互换UPDATE t_store_user u1, t_store_user u2SET u1.served_time = u2.entry_timewhere u1.user_id = u2.user...原创 2020-05-08 17:17:34 · 3644 阅读 · 0 评论 -
mysql之乐观锁悲观锁(InnoDB)
MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高 ,并发度最低。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生...原创 2020-03-26 13:49:28 · 560 阅读 · 0 评论 -
MYSQL获取当前年、季、月、周第一天、最后一天的日期
#当年第一天:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY);#当年最后一天:SELECT concat(YEAR(now()),’-12-31’);#当前week的第一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY);#当前we...原创 2020-01-13 16:12:42 · 1208 阅读 · 0 评论 -
MySql给表添加列和注释
1.给表添加注释ALTER TABLE 表明 COMMENT '注释信息';2.给列添加注释ALTER TABLE 表明 MODIFY 列名 VARCHAR(50) COMMENT '注释信息';3.增加mysql表一个字段+注释ALTER TABLE 表明 ADD COLUMN 列名 varchar(50) DEFAULT null comment ...原创 2020-01-07 16:15:26 · 1344 阅读 · 0 评论 -
tinyint和int区别
问题:int(1) 和 tinyint(1) 有什么区别呢?像这样的设计,反正我是不会写int(1)的。查了下,mysql中设置了储存类型后,储存是定长的,也就是说,int(1) 和 int(4) 在硬盘中所占的字节数都是一样的。我们知道,int类型占4个字节,tinyint占1个字节。int(1) 和 int(4)从本身长度还是存储方式上都是一样的,区别就是显示的长度不同,但是要...原创 2020-01-07 11:18:17 · 84286 阅读 · 5 评论 -
MySQL date、datetime和timestamp类型的区别
date和datetime、timestamp 的区别date保存精度到天,格式为:YYYY-MM-DD,如2016-11-07datetime和timestamp精度保存到秒,格式为:YYYY-MM-DD HH:MM:SS,如:2016-11-07 10:58:27因此如果只需保存到天的字段(如生日)用date就可以了。datetime 和timestamp两者都是时间类型字段,格式都...原创 2019-12-10 11:27:30 · 170 阅读 · 0 评论 -
mysql多表关联查询(关联字段)索引不生效问题
今天在执行sql语句时,使用表关联查询,结果发现子查询中的索引未使用,直接使用了全表查询,如图所示:找了半天原因,最后发现,是由于字符集设置问题导致的当将两个字段的字符集统一后,查询结果如下:Mysql 参考文档中也明确说非二进制String应该使用相同字符集:To retrieve rows from other tables when perfor...原创 2019-12-06 15:17:42 · 6501 阅读 · 0 评论 -
MySQL数据库远程连接很慢的解决方案
在开发机器上链接mysql数据库很慢,但是在数据库服务器上直接链接数据库很快。猜测应该是远程链接解析的问题,在查询MySQL相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题,就是在MySQL的配置文件中增加如下配置参数:[mysqld] skip-name-resolve在Linux下配置文件是/etc/my.cnf,在windows下配置文件是MySQL安装目录下的my....原创 2019-11-19 19:37:18 · 1394 阅读 · 0 评论 -
Mysql 5.7 如何设置字段自动获取当前时间
1、将字段类型设为 TIMESTAMP2、将默认值设为 CURRENT_TIMESTAMP举例应用:1、MySQL 脚本实现用例--添加CreateTime 设置默认时间CURRENT_TIMESTAMPALTER TABLE `table_name`ADD COLUMN `CreateTime` datetime NULLDEFAULTCURRENT_TI...原创 2019-11-10 11:15:30 · 1791 阅读 · 0 评论 -
完美解决mysql保存中文出现1366错误
最近在使用sqlalchemy将中文存放至mysql数据库的表中时出现:Warning Code :1366 Incorrect string value: '\xE5\x9C\xA8' for column 'content' at row 1这是因为我们存放的中文,而我们的表并不支持中文字符集,使用show variables like 'character%';查看mysql当前...原创 2019-11-06 14:53:05 · 684 阅读 · 0 评论 -
MySQL 加密解密函数
MySQL的加密和解密函数个人分为两类:1.只支持正向加密不支持反向解密的函数:MD5()、SHA1()|SHA()、SHA2()针对此类加密的算法MySQL不提供解密,但是我们可以通过网站http://www.cmd5.com/ 反向解密。改网站支持MD5、SHA、SHA256、SHA512等解密。2.支持加密和解密的函数:COMPRESS(),UNCOMPRESS():普通的加...原创 2019-11-05 11:36:01 · 3856 阅读 · 0 评论 -
Windows下MySQL的错误日志
MySQL版本:5.6Windows版本:Win7 64MySQL的错误日志记录了MySQL服务器启动、关闭和运行时出错等信息。默认名称为host_name.err,保存在MySQL实例指定的data目...转载 2019-08-04 14:05:02 · 10233 阅读 · 0 评论 -
sql进行批量更新或者一条sql写出批量更新的语句
有表如下t_user:字段如下id,name,phonet_phone:字段如下uid,phone其中t_phone表的uid字段是外键并且唯一,他引用t_user的id字段,现需要将t_phone表的phone数据插入到t_user表中。update的使用当针对于有关联的表时,update可以后接两个或多个表名Mysql--针对于全部数据update ...原创 2019-08-03 11:26:22 · 60890 阅读 · 3 评论 -
DB的分库分表
分表(只能解决数据量过大带来查询效率下降的问题,无法解决并发问题)对于访问极为频繁且数据量巨大的单表来说,我们首先要做的,就是减少单表的记录条数,以便减少数据查询所需要的时间,提高数据库的吞吐,这就是所谓的分表。(减少数据库的吞吐,就是减少数据库容量。)首先需要选择适当的分表策略,使得数据能够较为均衡的分布到多张表中,并且,不影响正常的查询。案例:对于互联网企业来说,大部分数据都是...原创 2019-07-25 12:31:19 · 334 阅读 · 0 评论 -
编写应用程序SQL和系统优化注意事项
1,Insert语句中,根据测试,批量一次插入1000条时效率最高,多于1000条时,要拆分,多次进行同样的插入,应该合并批量进行。注意query语句的长度要小于mysqld的参数 max_allowed_packet2,查询条件中各种逻辑操作符性能顺序是and,or,in,因此在查询条件中应该尽量避免使用在大集合中使用in3,尽量优化Nested Join内层循环。4,尽量避免复杂的...原创 2019-07-30 10:37:45 · 138 阅读 · 0 评论 -
数据库面试题及优化手段
1..尽量避免大事务操作,提高系统并发能力。2.大事务1.定义:运行时间比较长,操作的数据比较多的事务2.大事务风险:a)锁定太多的数据,造成大量的阻塞和锁超时,回滚所需要的时间比较长。b)执行时间长,容易造成主从延迟3.如何处理大事务a)避免一次处理太多大数据b)移出不必要在事务中的select操作3.什么是主从复制?(引入主从...原创 2019-07-24 15:11:35 · 3918 阅读 · 0 评论 -
认识MySQL的explain
explain在 explain的帮助下,您就知道什么时候该给表添加索引,以使用索引来查找记录从而让select 运行更快。如果由于不恰当使用索引而引起一些问题的话,可以运行 analyze table来更新该表的统计信息,例如键的基数,它能帮您在优化方面做出更好的选择。explain 返回了一行记录,它包括了 select语句中用到的各个表的信息。这些表在结果中按照mysql即将执行...原创 2019-07-29 09:16:26 · 101 阅读 · 0 评论 -
mysql 关于sql之外的sql
查看建结构show table status like '表名'Name: leyangjun 表名字Engine: MyISAM 表存储引擎Version: 10 版本Row_format: Dynamic 行格式Rows: 3999999 表中的行数(对于非事物表是精确的)Avg_row_length: 31 平均每行包含的字节数Data_length: 127995956...原创 2019-08-05 12:18:54 · 176 阅读 · 0 评论 -
Mysql使用java代码快速插入100W数据
由于压力测试,您需要在数据库中检索大量数据,但数据库中没有太多数据。因此,对于测试,您必须快速将大量临时数据插入数据库。 有两种方法可以快速插入大量数据:一种是使用java代码实现;另一种是使用数据库存储过程。 首先,你必须有一个数据表,注意数据表的引擎,在构建表时使用MyISAM引擎,MyISAM插入比InnoDB快得多,因为Inn...原创 2019-08-07 14:47:42 · 4176 阅读 · 2 评论 -
原 MySQL数据库优化
&n...转载 2019-08-10 09:25:58 · 235 阅读 · 0 评论 -
MySQL数据库入门教程超详细
点击查看MySQL优化文章一、写在前面 黑窗口启动mysql服务: net start mysql 登录:mysql -...转载 2019-08-10 09:31:28 · 10467 阅读 · 0 评论 -
mysql索引介绍-超详细
从数据结构角度 1、B+Tree(树)索引(O(log(n))): 关于B+树索引,可以参考MySQL索引背后的数据结构及算法原理 2、B-Tree(树)索引: 最常见的索引类型,基于B-Tree数据结构。B-Tree的基本思...原创 2019-08-12 10:33:41 · 540 阅读 · 0 评论 -
索引的本质
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计...原创 2019-08-12 10:50:14 · 369 阅读 · 0 评论 -
Mysql group by问题
看如下例子mysql> select count(1),task_type,status from action where biz_date='20141014' group by status;+----------+-----------+--------+| count(1) | task_type | status |+----------+-----------...原创 2019-09-20 11:19:03 · 145 阅读 · 0 评论 -
MySql数据库设计方面
1,选择合适的存储引擎(日常我们频繁用的有两种存储引擎,分别是InnoDB和MyISAM)一般情况下,InnoDB都是正确的选择,除非说需要用到些InnoDB不具备的特性,优先选择InNoDD。对于一个数据库来说,一般都是选择性地使用InnoDB和MyISAM。 在需要用到事务处理和崩溃恢复方面,那必定是选择InnoDB,那什么时候考虑使用MyISAM呢,在可以不考虑事务处理,对于崩溃恢复的代...原创 2019-07-28 22:04:48 · 211 阅读 · 0 评论