
数据库
文章平均质量分 67
游北亮
位于福州,从事技术团队管理、架构师、DevOps等
展开
-
MySQL数据库使用规范
规范是历史经验的总结,可以提前避免问题,减少不必要的沟通,提升质量和稳定性。原创 2023-05-25 14:05:00 · 1165 阅读 · 0 评论 -
分享一个自研的工具项目:代码生成|表结构对比|配置对比
从MySQL读取表结构,并生成对应的Java源码文件和对应的前端VUE编辑/列表页面,可以直接复制到项目中,entitymapperservicecontrollerdtoentity与dto互转的mapstruct-mapper转换类基于VUE2.0的前端html页面点击页面的下载文件, 并解压解压的文件,除html,其它文件复制到你的SpringBoot项目对应的java目录下html复制到你的SpringBoot项目的目录下复制项目根目录下的res.zip。原创 2023-04-21 19:25:02 · 609 阅读 · 0 评论 -
生产问题一则:MySQL隔离级别引发的数据读取失败问题
先简介MySQL的4种隔离级别和解决的3种问题:隔离级别脏读不可重复读幻读读未提交 read-uncommitted是是是读已提交 read-committed否是是可重复读 repeatable-read否否是串行化 serializable否否否脏读:事务A新增或更新数据,还未提交,事务B就能读取到,然后事务A回滚了,导致事务B读取的是脏数据。不可重复读:事务A读取一行数据,事务B更新该数据,事务A再次读取同一行数据,两次读取原创 2021-06-30 13:03:45 · 501 阅读 · 0 评论 -
生产慢查询记录:MySQL IN 子查询导致的慢查询
嗯,先说结论:MySQL的 in subquery 会导致全表扫描,并不会走索引,即使是用主键id in (子查询)也一样,比如:SELECT id FROM Activity WHERE Id IN (SELECT 1 WHERE 1=1)SELECT id FROM Activity WHERE Id IN (SELECT 1 WHERE 1=0)参考官方对 IN(子查询) 的说明,里面说:先执行外层查询,再匹配子查询生成的数据MySQL evaluates queries “from out原创 2021-02-05 16:08:56 · 1140 阅读 · 0 评论 -
生产慢查询记录:MySQL统计问题导致的慢查询一则
先说结论,变更频繁的大表,应该定期使用 ANALYZE TABLE 命令分析优化表统计信息。正文:收到一起bug反馈,生产环境突然查询变慢,查询消费数据需要近20秒才能有响应,开发兄弟在测试环境使用同样的代码版本,并把生产数据导入测试环境,均无法重现。VPN访问生产环境的swagger接口验证,也是秒级响应,无法重现。第一反应,看有没有慢查询,发现没有注:这一步,获取信息有误,开发给了错误的连接信息,导致判断没有慢查询。幸好线上问题是可以复现的,先把生产的一台服务器下线,然后把请求打到下线的服原创 2020-12-22 18:28:39 · 435 阅读 · 0 评论 -
MySQL写入emoji表情,并读取emoji表情的操作。
先放结论,读写emoji表情都正常的操作方式是:1、数据库的表定义,必须是 utf8mb4;2、SpringBoot配置文件里的连接串必须加 characterEncoding=utf83、配置文件里同时要添加初始化SQL语句: initSQL: “SET NAMES utf8mb4”保证以上3步,就可以正确写入,也能正确读取出emoji表情字符。-------------------------------------------------我是分隔符----------------------原创 2020-07-30 20:06:39 · 1795 阅读 · 2 评论 -
MySQL隐式转换,导致的误操作更新数据一则
早上过来,有数据需要刷库,简单整理更新语句如下:UPDATE tb SET content='xxx' WHERE tcode=1因为该表的 tcode 定义如下,并且是唯一索引:`Code` varchar(128) NOT NULL COMMENT '短码'没有想太多,直接安排刷库了,一看刷库结果,影响行数4097行,头一晕,赶紧用查询语句看一下:SELECT tcode F......原创 2020-03-10 09:56:25 · 543 阅读 · 0 评论 -
SqlServer日常维护中,常用SQL备份
1、–查看数据库版本信息 1 SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY('edition'); --查看数据库版本信息 2 SELECT @@VERSION; --查看系统信息 exec master..xp_msver; 结果如下图: 2、...原创 2018-08-13 13:12:51 · 1019 阅读 · 0 评论 -
C#读取超大文本文件的部分内容
线上用如下命令导出完整的数据库脚本: mysqldump -h10.1.9.36 -P8306 -uroot -p123456 business –default-character-set=utf8 –skip-lock-tables > dbback.sql 结果这个备份文件超级大,超过了100gb,尝试了vim、ultraedit、PilotEdit等编辑器都无法打开,改成导出单个表文件原创 2017-07-13 11:34:54 · 5872 阅读 · 0 评论 -
PowerDesigner中导入MYSQL数据库结构的步骤及问题解决
今天在使用PowerDesigner,要导入MySql的表结构到PowerDesginer里,记录下具体的操作步骤:1、首先要确保机器安装了MySql的ODBC驱动,去http://dev.mysql.com/downloads/connector/odbc/5.1.html下载 Connector/ODBC 5.1.13 的 Windows (x86,32-bit), MSI原创 2014-10-27 11:04:44 · 17845 阅读 · 2 评论 -
读取数据库数据填充到缓存的问题,及修复方案一则
业务简述:为了提高站点性能,部署了一台Redis,把资源从SqlServer数据库中同步到Redis,站点由原来的读取数据库,变更为读取Redis,以利用Redis的高并发提升站点性能目的。环境说明:1、假设表名为softs, 记录的更新时间字段名为 updateTime;2、不考虑数据库的DELETE操作,只考虑INSERT和UPDATE操作;3、流程中所有时间,都以数据库时原创 2014-07-07 14:08:13 · 2963 阅读 · 0 评论 -
SqlServer2005在SQL Server Management Studio里的sql格式化功能
<br />以前在用Oracle的时候,一直很喜欢PL/Sql里的格式化Sql的功能,今天偶然中,发现了SQL Server Management Studio也支持格式化Sql的功能,只能这个功能比较隐讳,很奇怪为什么不把这个功能整合到查询窗口里去<br />废话不多说,直接上图 开始介绍:<br /><br /><br /><br />原创 2010-09-13 20:00:00 · 11056 阅读 · 2 评论 -
OracleParameter设置空值时,导致ORA-01008错误的解决
如下代码:string l_id = string.Empty;string l_sql = "select * from tb1 where id = :vid";OracleParameter l_para = new OracleParameter("vid", OracleType.VarChar, l_id);如果l_id为null 或 string.Empty时,执原创 2008-11-28 13:10:00 · 6939 阅读 · 0 评论 -
Oracle中,特殊字符(如回车换行等)的拼接
以前在用代码处理Oracle的导出时,如果字段中有回车换行,处理总是很烦恼,做法是把字段里的回车换行干掉,这样也太土了点,呵呵,不过因为对Oracle不熟,也就这样下来了,后来突然想起,PL/Sql是怎么处理这个问题的呢?就用PL/Sql导出看了一下,发现它把回车变成了chr(13),换行变成了chr(10)哈哈,我的问题也解决了,导出时,把字段里的回车换行替换一下就OK了,如:INS原创 2008-12-27 09:38:00 · 21656 阅读 · 1 评论 -
CPU使用率日渐增长,重启Sql服务就正常的问题
这段时间遇到一个很古怪的问题,有一台Sql Server 2005服务器,CPU使用率会每天增长一点,到最后会非常高,造成所有查询都超时,此时重启这台服务器的数据库服务,就恢复正常了,但是CPU还是每天增长,最后又挂掉,CPU增长如图:上图的3个最高点,都是重启数据库服务后就正常了,在Week45和Week46之间的一个高点,是执行了下述sql:DBCC FREEPROCCACHE原创 2011-11-24 10:27:29 · 954 阅读 · 0 评论 -
DataReader没有Close之前与Output参数的问题
前天在代码里遇到的bug,代码如下:var para = new SqlParameter("@re", SqlDbType.DateTime) { Direction = ParameterDirection.Output };using (var con = new SqlConnection(constr))using(var commadn = con.CreateCommand())...原创 2013-05-28 11:46:46 · 1388 阅读 · 0 评论 -
分享一个收缩数据库日志文件的存储过程
实际工作中,经常数据库日志文件非常大,但是实际使用的容量又非常小,具体可以通过下面的sql看到日志文件大小,和文件使用率:SELECT name, data_space_id 文件组id, size/128 [文件大小(兆)], FILEPROPERTY(name, 'SpaceUsed')/128 [已用空间(兆)], size/128 - FILEPROPERTY(na原创 2013-05-29 16:51:42 · 1405 阅读 · 0 评论 -
Sqlserver2005分区表实现步骤
在SqlServer2005中新增了分区表的支持,对于一些大数据量的表,我们可以对它进行分区,以便提供更好的性能,下面是我的一些体会和详细的分区步骤了,假设要操作的数据库名为db1,表名为tb1(id 自增int, insertTime DateTime),表内保存了2006~2010年共5年的数据,要做5个分区: 0、分区键的选择分区的关键是要选择好分区键,就是在插入数据时,新的原创 2013-06-21 11:36:32 · 5029 阅读 · 1 评论 -
Sql Server分区表,清空单个分区的快捷方法
分区表创建步骤参考:Sqlserver2005分区表实现步骤 我们如果在Sql Server里创建了分区表,有时根据业务需要,可能要清空某个分区的数据,通常我们只能用如下SQL:Delete from 表名 where 分区条件这种sql非常慢,而且还会创建大量数据库日志,其实我们可以用一个简单的方法把它替换下来,然后Truncate掉,假设我们有个分区表叫fqb,表结构如下:原创 2013-08-26 14:36:49 · 5841 阅读 · 0 评论 -
Sql Server中COUNT(字段名)跟COUNT(*)的特殊不同点
今天有个需求,有2张表:1、一个“搜索记录”表search,一个“搜索后下载记录”表down2、映射关系:每一个下载记录对应一条搜索记录, 第个搜索记录对应一条下载记录,也可能没有下载记录现在需要统计某个搜索词的搜索次数、下载次数 和 未下载次数正常情况下需要统计3次原创 2013-09-10 14:06:38 · 5235 阅读 · 0 评论 -
SQL中WHERE 变量 IS NULL 条件导致全表扫描的问题
今天在评审接手的项目中的存储过程时,发现存在大量的在条件里判断变量是否NULL的写法,如:SET @SQL = 'SELECT * FROM Comment with(nolock) WHERE 1=1 And (@ProjectIds Is Null or ProjectId = @ProjectIds)原创 2013-09-25 11:59:51 · 10777 阅读 · 1 评论 -
不要拼接Sql,而要使用参数的好处之2
在实际开发中,经常会需要对数据库进行访问,最常见的开发方法就类似:string sql = "select * from table1 where name = " + name + "";这种方式有被注入攻击的危险(什么是注入,搜索一下吧,太多了)所以解决方案有2种:1、改成:string sql = "select * from table1 where name = "原创 2008-11-12 10:12:00 · 6997 阅读 · 14 评论