- 博客(513)
- 资源 (15)
- 收藏
- 关注
原创 不会C/C++的不是好DBA,一个解析MYBAITS的脚本
自然不管你是管什么DB的,只要前面业务是用JAVA开发的,使用SQL语句进行请求.那么你就需要这样的脚本. 把代码仓库里的所有MAPPER文件夹下面的XML文件中的SQL提取出来分析. 我这个项目136个文件,提取了1099个SQL.我发现了9个MYBAITS语法BUG. 然后我把这些SQL提到SQL审核里面去匹配下规则.这可不是标题蛋. 数据库作为信息社会的基石,且是核心基石.它需要面对高并发的SQL请求,要处理大量数据的请求,且要运行稳定的三要素. 说白了就是要快,要多,要稳!
2024-08-16 09:49:50 787
原创 国产数据库最终选择
ORACLE不是不能用,顶多不买服务,不买新版本而已.只所以要搞国产替代,因为鹅乌战争导致的. 甲骨文公司明确地退出了鹅国市场,不再提供服务了.那么作为非常依赖原厂的甲方,就很难受,没有背锅侠. 为了防止美西方帝国主义,资本家甲骨文公司给小鞋子穿. 我们要坚决把ORACLE数据库从中国市场踢出去.所以 没钱去用国产数据库,则要干,怼,抗上面的压力. 它们官僚主义,形式主义,运动主义作风很坏的. 为了推国产还在民企施压!选错了国产数据库,或者轻易转到国产数据库是个非常大的业务风险.成本高,风险大.
2024-08-16 09:42:16 471
原创 架构DBA
做个平凡的人,不焦虑,不担心就是了,该吃吃,该喝喝,该运动,该唱歌就是了. 什么云取代DBA,什么AI取代DBA,除了制造焦虑也没有其它更多的观点了. 他们互怼还是能了解到真实信息的,最怕人家商业互吹,相互隐瞒,报喜不报忧。优化DBA: 这个主打就是对SQL的优化,比如执行计划,等待事件,优化器参数设置,表的统计信息收集,数据的分布情况,PROFILES, MYSQL还涉及系统性能的探测工具. MYSQL的索引规则,锁规则,需要有所了解,最好能熟悉!向大佬学习,该努力,该选择还是要的!
2024-08-07 10:52:32 964
原创 海信聚好看的DBDocter软件使用心得
针对数据库性能诊断门槛高、耗时长的问题,DBdoctor提供了快速易用的解决方案,深入到数据库内核,实时海量数据分析,提供精准的诊断分析和优化建议。这种免费版本 中国公司基本上都是渣渣版本,基本上都是免费功能都有,看时强大,关键地方调链子,要想用得爽快,那得购买企业版本!除了要在生产环境安装 AGENT 还要额外安装EBPF工具. 对没有安装的生产环境确实有些尴尬.在墨天轮大会看到这个软件,好称是内核级别的诊断工具, 工作空闲下载免费看看。EBPF 是LINUX系统各种性能分析工具的集大成者!
2024-08-03 12:13:54 195
原创 再论国产数据库的选择
上篇写得很水,本来不想继续写了!毕竟写一篇很费心力,大家觉得好,就点下广告支持下吧!因为今天看到类总的朋友圈,发个公号文章.里面讲个故事,关注数据生态,讲述开源故事13篇原创内容公众号。
2024-08-01 18:50:55 676
原创 一段直接路径读取文件LINUX C代码
哎 搞到高兴之处,把生产的14个SQL的文件传给SQLE进行审核,居然说语法不支持,开始我以为HINT放的位置不对, 另外SQLE还说SQL太长了,要分成多个SQL的提示. 以前直接审计XML文件,对有些超长的方法也是这样报错,我以为想当然. 直到看到一个DELETE语句 不到50个字母,也这样说,就忽然明白了什么. SQLE没有去空. 我写文件一次写入4096个字节,也可以说字符,大部分提取的SQL顶多是1500个字母,后面好几千都NULL.社区版也就这样,功能超强,细节不完美,要完美估计要买企业版.
2024-08-01 16:48:28 946
原创 基于MYSQL的JAVA初级优化措施
汇编语言有子过程,C语言有函数,C++语言有类, 数据库有存储过程. 这些都是为了重用,复用而实现的. 因为程序都是数据结构+算法. 那么程序的基本结构都是一致的,唯独数据不一样而已 好比说。然后用户也用该方法,商家也用该DAO的方法,返回的属性,大部分不用,只用其中某些属性,然后打包成JSON格式返回给前端. 也许直接丢给前端,然后前端自己裁剪.我们草台班子,急于求成, 一般都会把这个默认条件给忘了. 让用户随意选择时间范围, 数据量一大,基本就是全表扫描,那怕你创建索引也是没有用的!
2024-06-18 14:10:52 863 3
原创 MYSQL execute command denied to user ‘‘@‘%‘ for routine
MYSQL ROOT 权限默认不能拥有全部权限, 函数定义最好是应用账号,使用ROOT,还要额外赋执行权限. 这个执行不是EXECUTE!
2024-06-11 11:46:18 721
原创 MYSQL 索引下推 45讲
刘老师群里,看到一位小友 问<MYSQL 45讲>林晓斌的回答大意是一个组合索引 (a,b,c) 条件 a > 5 and a <10 and b='123', 这样的情况下是如何?林老师给的回答是 A>5 ,然后下推B='123'小友 问 "为什么不是先 进行范围查询,然后在索引下推 b='123'?然后就没有然后了....说真的,不是我有意踩林老师, 我只是说<MYSQL 45 讲>吃个半饱, 大脑半醒半睡,好比晚上2点睡,早上被8点闹钟催醒. 上午在公司里梦游状态样.
2024-06-10 12:06:48 1030
原创 AI能否代替ACE
他们都是C/C++语言, 稍微学下语法,然后学下如何调试, 什么功能你不就清楚了吗?码农赶紧转入AI编程, 买一张显卡,搭建下CUDA库,还什么其他的,学下各种算法,对了 ORACLE 是闭源的数据库, 而且即将退出中国市场,被国产数据库淘汰掉。2020年,海外神经网络流行了, 去年AI火了,21世纪将是 AI编程时代.这个ORACLE社区贡献,又不是写代码,只是在论坛上回答别人的问题,作为爱祖国的我,国产数据库到来,就要拥抱国产数据库,华为高斯DB!你不需要30亿参数去训练.什么算力,都是将来的事情.
2024-05-31 22:11:37 640
原创 如何选择国产数据库?
ORACLE的强大是全方位的,作为甲方DBA,喝喝咖啡,看看报纸,开开会,临听一下ORACLE ACE吹水!作为国企的DBA, CTO.基本上国企都算是传统行业,都是跑ERP系统,进销存系统.客户关系系统.基本上都是B2B业务. 直接面对普通老百姓的互联网业务非常少. 核心业务都是使用ORACLE,少量互联网业务也是用MYSQL. 5年前要搞国产化替代,2年前俄乌冲突,大量美西方企业退出俄国市场. 未来要是在东海发生什么FIRE的话,必然大量的美西方退出中国市场. 关停大量的业务和服务.
2024-05-31 19:42:48 597
原创 MYSQL RR隔离级别下无索引更新是否表锁?
是啊 MYSQL 以及进化到了8.3.0版本了,普遍都使用5.7和8.0版本.而且还听说 INNODB引擎会把不符合条件的记录给释放锁. 原理大概是这样的,一个表有100行记录,一条UPDATE语句需要更新10行记录. 而这10行记录分散在这100行里, 从第一个符合条件的行到最后一个不符合条件的行 大约是30行. 好吧!RC隔离级别下,这种无索引更新,最后还是会释放掉那些不符合条件的记录.那么在它上锁到释放锁的过程里,时间里,高并发下,或许会阻塞并发.套用某人的话说, 我以上都是胡说八道!
2024-05-07 11:24:34 562 1
原创 DBA搞钱之路
如今也是而且大部分都是,提供的岗位真多!就是搞数据库开发,比如周边的工具,或者包装下PG,MYSQL. 比如说PIGSTY工具包, 自然对你需要懂很多,尤其是商业眼光,懂C/C++语言的开发,系统内部原理. 首先你得先开发出来,然后有客户有市场,才能创业开公司.不要聚集在国内,放眼全球市场.那个啥,河北有个程序员翻墙给外网做了啥,结果获得300万都被没收了. 翻墙是不对的,是违法的,前提需要备案,然后中国电信提供翻墙业务,不能去淘宝买翻墙软件. 这对你要求很高,要有商业眼光,要有开发能力,要会英语交流!
2024-04-22 10:16:41 1681
原创 多线程C++更新MYSQL
4 AI 给了错误提示 循环启动线程,然后马上join() 导致主程序等待线程完成,再创建下个线程. 换成detach() 主程序就不等待了,立马把所有线程启动起来了. 可是这样主线程执行完后面的代码就结束了.主程序一结束立马把所有线程都杀了. 为此使用下面语句进行等待一段时间. 这就没有意思了。其实这英文单词取得很绕 join() 应该是wait() detach()应该是nowait()所以采用双循环模式,先把所有线程启动,运行,然后再另外个循环等待。调用线程库 这是C++的库.
2024-03-15 10:18:51 809
原创 如何锁定MYSQL内存在物理内存里?
如果不支持的话, 你又想锁定内存 那只有使用大页方式. 关于大页小仙我也实验了一篇。以下是CENTOS 7 接受运维搭建的MYSQLD 是通过SYSTEMD方式启动服务的.创建mysql用户来管理数据库 查看测试数据库 YUM 自动安装的MYSQL。新建个服务配置如下. 我这里直接用了上面初始化后的数据库,只不过使用不同的服务脚本而已。这个参数是啥意思呢?上面官网最后一句英文意思是启动的选项. 其实做进配置文件也是一样的.# 使新添加的mysqld服务开机启动。
2024-03-01 15:23:47 1143
原创 MYSQL C++链接接口编程
使用MYSQL 提供的C++接口来访问数据库,官网比较零碎,又不想全部精读一下,百度CSDN都是乱七八糟的,大部分不可用官网教程地址网上之所以乱七八糟,主要是MYSQL提供了3个接口两个包,使用两种语言交叉编程. 可以用GCC编辑C语言调用C++接口. 可以用C++语言调用C接口.分别是C 接口, C++接口 MYSQLX接口. 三个接口两个包.C包和C++包, C++包()里面从官网下载,而C包从MYSQL服务端包里抠出来.
2024-02-29 09:58:13 1188
原创 MYSQL分区NOW()不支持
发现此表是分区表,后面要求加上了分区时间,以便利用到分区裁剪技术. 因为需求是查近10天来到期还款的人和金额.就是今天应该还款的人, 一般还款周期是7天. 给个10天的范围挺可以的. 结果其中一个降低到1.4秒,另外一个始终是7秒.扫描800万.最近后空看它的执行计划,全分区扫描,没有使用分区裁剪技术,其实也用到了一点点分区裁剪技术,我们这个表按月分区的,现在是12月份,前面3月到12月它都扫描了,后面的明年1月份之后都没扫描,毕竟是0行记录.执行计划全分区扫描,换成NOW()函数也是这样的。
2024-02-08 09:25:38 462
原创 进程虚拟地址困惑
最后很大可能是 64程序逻辑地址,就是虚拟地址,也是进程虚拟地址,也是按照页表格式构成的虚拟地址. 那么物理地址偏移量,可能大概率是虚拟地址4K页,页内偏移量.我讲东,他们讲西,不在一个频道上. 他们不理解我的疑惑, 也许只能去看,去调试LINUX 内核代码,看LINUX如何加载可执行文件,给它分配虚拟内存地址空间!那么这个地址是哪个部分?我们程序运行过程中打印的变量地址, 函数地址,指针地址. 这些都是什么呢?静态读取可执行文件,发现有虚拟地址,物理地址,偏移量,文件大小,内存大小,权限,对齐等信息.
2024-02-05 09:37:26 995
原创 MYSQL LEFT JOIN 的怪异行为
如果LFET JOINBWHERE条件部分有B的条件,那么它跟主表不再是LEFTJOIN ,而是变成了 INNER JOIN!
2022-07-21 09:44:49 345 1
原创 使用PTONLNE改MYSQL分区表
上篇使用ALTER 来修改分区,对数据量很大的表会造成长时间的METEDATA LOCK 。因为COPY TO TMP TALBE 过程中 加锁了。其实这是没有必要的! ONLINE DDL 还没支持改分区表。有些业务没有停机维修的时间窗口,则需要用PTONLINE工具https://www.percona.com/downloads/percona-toolkit/LATEST/##01 安装在CENOTS7上tar -zxvf .....yum -y install perl-.
2021-09-06 18:24:25 459
原创 MYSQL 5.7 普通表在线转分区表
当MYSQL流行5年后,表的数量达到500万,RDS运行时很多SQL都会超过2秒.在如今互联网业务中,一个页面展现超过10-15秒人们就觉得慢,感觉不耐烦,除非你是GOV的,否则都抛弃你公司,转而使用竞争对手的产品。为此落实在数据库端的SQL响应时间就缩短到1-5秒时间范围。目前一个简单的DML操作是规定在1秒之内,而查询一般规定在5秒之内。也就是说给DBA的时间不多了!很显然JAVA开发同学都是赶业务的,开始都是简单地搞起来,哪里想得到日后数量大的情况呢?为此我们必须上分区。MYSQL也有分.
2021-09-01 11:04:52 488
原创 C 语言的标准时间封装
C语言处理时间有很多函数和结构体类型完成,并且涉及到时间戳,标准时间,本地时间的转换。学习起来感觉头大,外加上小写并且简写函数名称,就难以理解。代码中解释#include<time.h>#include<string.h>#include<stdio.h>#include<sys/time.h>typedeftime_tTimeStamp; //旧的时间戳类型 给他其个新名字typedefstructtmscTime; ...
2021-03-14 23:35:37 363
原创 Java 通用DB链接字符串解密方法
这种方式是主要是利用了spring加载顺序,因为在加载c3p0加载之前先对配置文件中的密码进行相应的解密,并且注入到属性password中,这样在创建c3p0连接的时候,用的密码就是明文密码了/*注意,这里有个先后顺序的问题,<propertyname="properties">必须要在前面${env}是环境变量开发,测试,生产,灰度*/<beanid="C3p0DataSource"class="com.zns.tool.C3p0DataSource">...
2020-08-09 18:15:45 2109
原创 LINUX C++读配置文件
重温C++这篇最后部分的代码只是完成了OCCI接口的实现,可以向多个ORA数据库批量执行指定的SQL;这次我们完成读取配置文件,就是多个数据库连接信息的配置文件。类似以下的格式 KEY=VAULE 并且换行来区分不同的数据库连接信息,里面使用#来表示注解dbname=sharkdbclassA=TESTclassB=PLPMclassC=JNuser=scottpasswd=12...
2019-12-10 22:23:31 1401
原创 重温C++
C++1 子函数可以把定义放在MAIN函数前, 实现在MAIN函数后2 函数之间的值传和地址传方式 call() { vector<string> name; string lastname who_is(&name,&lastname); cout<<name<<endl; } void who_is(vector&...
2019-12-09 22:35:07 363
原创 DBA与架构师
有一天跟DBA探讨下AB表设计的事情, DBA说这个嘛,根本不需要AB表,可以采用分区,交换分区来实现,架构师说分区并不是所有数据库都有,交换分区是ORACLE特有,其他关系型数据比如Sqlserver,Sqlite,PostgreSQL,Mysql,MariaDB。不一定都有,也就是说交换分区通用性差。可DBA说“如果不知道有这个分区特性,作为开发架构设计人员,也只能说不及格”架构师瞬间惊讶了...
2019-09-21 21:32:01 826
原创 A B 表的设计思路
AB表设计以前在一家第三方结算的公司做运维DBA,在一次与开发人员探讨某个表的数据运维。那时我头脑想到AB表来切换使用,比如当A表写满后,就切到B表,那么A表就可以做运维工作。看到系统有管理,业务,日志WEB页面,我想应该有个数据运维页面,在页面上点击个按钮就改变应用程序从读A到读B的操作。当然没实现,比较在一个成型的系统不好做。去年面试个小额贷款公司,就被问到跨年问题,该表如何设计跨年。。。当...
2019-09-21 21:29:55 1272 1
原创 Could not connect to Redis at 127.0.0.1:6379: Connection refused
这个要是在redis服务器上使用遇到的话,先使用 netstat -tlun查看端口绑定去哪里了?netstat -tlunActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp ...
2019-01-01 00:23:17 4867 3
原创 MYSQL的恢复
MYSQL备份恢复就简单多了! 只要执行该备份文件就行了,该备份文件是SQL哦!恢复完全备份mysql -uroot -p < backup.sql就这么简单!恢复增量备份mysqlbinlog MySQL-bin.000002 … | MySQL -u root -p注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能增量恢复也是怎么简单的哦!...
2018-11-02 17:04:14 1325
原创 MYSQL备份
数据库的备份是非常重要的事情,危机来的时候可用于恢复。如同旱情的时候的水塔,粮荒时候的粮仓!那么我们的MYSQL的备份就相当的重要了!话说备份有很多种,什么冷备,热备的;什么逻辑备份和物理备份的。还有什么单表备份,全库备份,全实列备份。估计学习并理解起来有点复杂和吃力,很多时候根本用不着,学了也白学了。MYSQL的备份跟ORACLE备份有点区别!ORACLE 备份使用RMAN工具,备份...
2018-11-02 17:01:00 1300
原创 LINUX SSH 密钥认证登陆配置
给公司阿里云的ECS配置SSH认证,中间遇到一些问题,主要是概念不很清楚。ECS服务器OS 是CENTOS 7 自带OPENSSH服务netstat -ntlp | grep 22 就可以看到 22端口 和服务SSHD SSHD服务的配置文件在/etc/ssh/sshd_config。先讲下认证过程一般先在客户端上生成密钥,我在windows 上生成,自然是我的工作电脑上。...
2018-10-16 19:02:48 2345
原创 完整的WICKET6 HELLO WORKD WEBAPP
web.xml 位于 项目/src/main/webapp/WEB-INF/web-app> display-name>Wicket Testdisplay-name> filter> filter-name>HelloWorldApplicationfilter-name> filter-class>org.apache.wicket.protocol
2018-01-23 18:52:32 522
原创 WICKET 6 重新定位HTML所在的目录
比如时候我把HTML 放在 webapp下的HTML 子目录下。。。。 WICKET 要点 1 该子目录下可以根据包名系列来查找,意味着说,要在该目录建立同样的包目录结构,跟JAVA下的包一样。 2 不能放在WEB-INF目录下一般项目目录结构是 项目/src/main/(java,resources,webapp) 项目/src/test 项目/targetJAVA代码在
2018-01-23 18:25:04 503
原创 首个WICKET HELLOL World 报错Can not determine Markup. Component is not yet connected to a parent.
今年头次使用WICKET 来开发个WEB 网站来玩玩,从APACHE 网站下载了WICKET 8.0,然后下载对应的PDF官方文档,照抄HELLOWROLD列子,发现牛头不对马嘴。8.0不支持文档里的IMPORT包! 奇怪奇怪真奇怪。或许这也是WICKET 无法火起来的原因吧! 为啥还要使用WICKET呢? 那是因为我是老DELPHI,C++BUILDER RAD工具使用者以及VB使用者,对
2018-01-23 17:26:52 955
ORABBIX4 支持ZABBI4
2019-03-11
深入LINUX虚拟内存管理中英文
2016-05-30
LTOM系统监控
2016-05-27
oracle dul10
2014-08-28
oswatch301
2012-09-28
个人收支分析系统
2011-12-30
Oracle 10g RAC GCC 需求包
2011-12-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人