
mysql
dj1540225203
加油打工人
展开
-
mysql配置解释
以上提到的 MySQL 配置参数对程序的执行有显著影响,特别是对于性能、资源管理、查询优化等方面。合理的配置能够提升系统的整体性能,减少延迟,并提高并发处理能力。通过监控 MySQL 的配置和日志,可以不断调整和优化数据库设置,从而满足高并发、高性能的应用需求。调整这些参数时需要考虑具体的应用场景、硬件资源以及程序的负载,建议在生产环境中进行充分的测试,避免引入新的瓶颈。原创 2024-11-07 16:37:05 · 668 阅读 · 0 评论 -
navicat同步库到本地
有时候我们在本地开发,为了是保持测试环境数据库的干净性,不影响其他同事的开发与测试,我们需要同步测试环境的数据到本地中来进行本地开发调试;navicat就是一个非常好的工具,还可以对比测试环境与本地差异了那些字段等等,非常方便,在此记录一下。原创 2023-04-28 14:46:14 · 1159 阅读 · 1 评论 -
mysql字段中json字符串中如何查?
产景:查积分为20%的商品?记录是如下的,如何查呢?原创 2023-01-20 11:21:12 · 257 阅读 · 0 评论 -
MYSQL 通过SSH连接配置
优秀的数据库权限控制系统有很多,比如Yearning等,但是根据不同场景有不同使用,比如在局域网中代码服务器和云数据库一般都是在同一个局域网的这样方便数据交流,但是方便的同时很多公司会直接开放外网数据库连接这是不安全的。如果代码泄露中有数据库真实连接遭到破坏就完蛋了,如果代码中有的是局域网ip等信息那就相对安全,但是也不能避免程序员离职后搞破坏,最好的方式是①每个员工有个数据库账号只读,或者对特定库表的权限②快离职前把账号删掉,避免离职后搞破坏操作,不然背锅③代码中不要放置任何数据库相关的配置信原创 2022-05-28 01:56:01 · 2521 阅读 · 0 评论 -
Mysql锁超时&死锁定位及解决
Mysql锁超时&死锁定位及解决 - 掘金今天无意中在掘金看到一篇关于,锁超时和死锁是问题,突然来了兴趣了!具体内容请参考那个博客!select * from performance_schema.data_locks;我没看到data_locks这个表!还有过一会那个show processlist;中更新的进程也会自动关闭!深入:Mysql performance_schema的data_locks 和 data_lock_waits说明 - 简...原创 2022-04-25 12:00:40 · 956 阅读 · 0 评论 -
尽量避免使用in、not in,为啥?
原因:效率低,还有可能出错方案:使用exists或者not exists替换;但是也不是说完全不能用in或not in这得看你能否确定in这个集合是否存在可确定的集合而且评估集合范围大不大;如何集合你可以确定不大而且里面的值你也确定有值,那么用in或not in是没有问题的!注意:建表的时候不要默认为null!问题多多!解释缘由:t1表 和 t2表 都是150w条数据,600w的样子,都不算大。但是这样一句查询select * from t1 where phone not in (selec原创 2022-02-26 21:41:57 · 1136 阅读 · 2 评论 -
redis 缓存击穿(失效)、缓存雪崩、缓存穿透
①何为缓存击穿?原因:就是高并发情况下,对单一热点数据的访问;但是redis中没有,数据库中有;后端代码需要频繁的将热数据写入redis的同时还要返回给请求端。很关键点是高并发、热点数据、数据失效。后果:可能数据库宕机;服务不可用。解决方案:1.过期时间+随机数2.预热 热点数据加入redis缓存3.使用锁机制,保证每次都只有一个进程可以获得锁进行写入②何为缓存穿透?原因:请求一个既不在数据库也不在redis中的数据;一般情况下不会存在这种情况,因为redis都是转载 2022-03-14 16:57:03 · 144 阅读 · 0 评论 -
mysql 存储过程
先说一下优劣势,再说一下使用场景吧1、存储过程的优势(1)、减少连接数(2)、调用相对程序方比较简单,由DB管理员加,程序方只是需要传递参数即可(3)、方便DBA查看2.使用存储过程的劣势(1)、程序极大耦合,业务一旦更改,需要都进行更改(2)、牵扯到复杂计算的情况下,需要数据库进行运算,而数据库的优势是存取,循环等逻辑判断服务的情况是数据库的一个硬伤(3)、调试困难,无法知道运行sql的情况,尤其是数据库有专门DBA的情况(4)、主从分离的情况无法使用 (5)、无法适应数据库的切割(.原创 2022-03-08 10:46:16 · 111 阅读 · 0 评论 -
mysql 视图
视图可以理解为虚拟表,其实就是使用select语句把表筛选出来存入视图。根据表创建视图之后;视图中的数据改变了,会同步改变到表中;表中的数据改变了会同步改变到视图中,类似vue的双向绑定动态变化。优点:使用视图优化复杂查询,有时可以优化掉很多需要join的操作 使用视图限制某些用户对指定数据的访问,比如mysql表只能对表进行控制,但是视图可以做到列的控制,如果不想给用户看到对应的列,视图关联时不显示出来即可。 安全性,可以只允许视图视图(不允许更新,当然这个mysql表也可以做到) 数据库视原创 2022-03-12 13:56:42 · 847 阅读 · 0 评论 -
yii2中使用ES
当一些场景mysql不能满足的时候,需要使用到ES,比如 通过商品名称查询,分词查询等等,如果使用mysql 的like "%XX%"非常耗性能,可能导致mysql服务器出现就瓶颈问题。那么就需要一种方案来做为中间者减轻数据库压力。原理:查中间者,而中间者的数据又和mysql数据同步。这个中间者当然就是ES啦。参考:Yii 2.0 集成 ElasticSearch 教程 - 教程 - Yii Framework 中文网当然其实原理都差不多,就是各种语言引入对应的ES类库;然后调用方法,其中最主要原创 2022-01-24 15:46:02 · 2286 阅读 · 0 评论 -
pt-online-schema-change在线修改大表!
数据库在线增加修改表,一般都是通过sql直接修改了,但是总感觉不妥,当数据量达到一定级别的时候,总会有踩坑的时候,在此记录一下一个好玩的工具pt-online-schema-change。效果:1.安装工具。把下面语句一行一行执行完即可。wget percona.com/get/percona-toolkit.tar.gztar -zvxf percona-toolkit.tar.gzcd percona-toolkit-3.3.1/yum install perl-Ex...原创 2021-09-23 14:27:02 · 186 阅读 · 0 评论 -
Navicat中之前成功的数据库连接忘记密码之后如何找回?
1.在线网址运行这段代码<?phpdate_default_timezone_set('Asia/Shanghai');class NavicatPassword{ protected $version = 0; protected $aesKey = 'libcckeylibcckey'; protected $aesIv = 'libcciv libcciv '; protected $blowString = '3DC5CA39'; pro原创 2021-07-23 16:58:20 · 271 阅读 · 0 评论 -
查找字段中,指定字符串之间的字符串
查询货号,记录一下select id,cover_pic,detail from xcxmall_goods where id in (SELECT SUBSTRING( attr, LOCATE( '"no":"', attr )+6,LOCATE( '","bar_code"', attr )-76 ) submsg FROM `xcxmall_admin_goods`)原创 2021-03-03 11:45:39 · 133 阅读 · 1 评论 -
Yearning mysql审核
一款开源的mysql审核;进行权限分配等等,非常方便。1.下载Yearning源码到本地:2.上传源码到linux中data文件夹,进行解压:Yearning参考3.创建数据库4.快放端口,进行宝塔开发端口,进行阿里云开发端口5.访问效果...原创 2021-02-24 15:00:42 · 210 阅读 · 0 评论 -
mysql之information_schema数据库
mysql使用了读写分离;主从同步;当日志文件过大表过大的时候会导致;读写主从有一定的延迟导致从数据库被剔除;使用information_schema删除表信息;过大查询也会导致从库被剔除之前就尝试过一次查询information_schema中的COLUMNS表导致入宽太多兆导致从库挂了。参考:information_schema是什么?//清理erp日志记录public function actionClearErpLog(){ $sql = "SELECT原创 2021-02-20 09:39:40 · 166 阅读 · 0 评论 -
php之redis你不知道的事
redis还可以这样用!1、SET key value 含义:将字符串值 value 关联到 key 。如果 key 已经持有其他值, SET 就覆写旧值,无视类型。2、SETEX key seconds value 含义:将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆...原创 2021-02-01 11:55:26 · 81 阅读 · 0 评论 -
sql记录
1.复制生产库xcxmall_goods表到测试环境:xcxmall_admin_goods。2.通过sql查询过筛选有用客户store_id in (6,15,16,18,27,28,32,34,35,36,37,38,39,40,41,42,43,44,45,47,49,50,53,54,56,57,58,59,61,62,63,65,66,68,69,70,71,72,75,76,77,78,79,80,82,83,85,89,90,92,94,95,96,97,98,99,100,101,102.原创 2021-01-20 17:27:42 · 97 阅读 · 0 评论 -
mysql一些不常用操作
①查找并修改非innodb引擎为innodb引擎select concat('alter table ',table_schema,'.',table_name,' engine=innodb;') from information_schema.tables where table_schema not in ('information_schema','mysql','performance_schema') and engine='myisam';②在需要备份数据库里面的数据时,我们需原创 2020-12-22 10:13:26 · 122 阅读 · 0 评论 -
Redis结合定时任务实现向指定URL推送
每个客户对接可能客户都有自己的服务器作为中控系统;需要双方的信息进行相互推送达到信息同步;那么怎么实现信息同步呢?①表模型修改后触发,redis储存需要推送的信息。②定时任务跑推送到客户服务器url进行信息同步。models/Register.php (模型) public function afterSave($insert, $changedAttributes) { $data = $insert ? json_encode($this->attribut原创 2020-12-11 15:12:16 · 493 阅读 · 0 评论 -
多进程swoole批量更新之case when坑
有个需求是通过货号;去csv批量导入去更新某个客户的库存表数据(真实库存等信息核心表);因为涉及到表比较大;使用了多进程swoole来实现,再结合需求进行case when过滤操作;如果客户有多个门店某个字段不填写某人不修改之前的字段信息。然后就出现了很神奇的一幕。按道理来说:为啥2317828172 stock会被改掉呢?全部stock都被改成了0;打印日志发现。执行的sql为UPDATE `xcxmall_inventory` SET `stock` = CASE goods_no WH原创 2020-12-11 09:15:10 · 239 阅读 · 0 评论 -
使用xlsx,csv等操作mysql数据库
记录一下通过xlsx,csv文件修改数据库生产救急!记录一下update xcxmall_goods m, Sheet1 mp set m.attr=REPLACE(m.attr,mp.`原货号`,mp.`更新货号`) where mp.`小明商品ID`=m.id and m.store_id=100;update xcxmall_inventory m, Sheet1 mp set m.attr=REPLACE(m.attr,mp.`原货号`,mp.`更新货号`),m.goods_no=mp.原创 2020-12-08 19:01:19 · 159 阅读 · 1 评论 -
给你一个sql文件,你能动态化写入数据库吗?
如果给你一个导出来的sql文件,做数据库迁移或者啥的操作。你是使用便捷器替换然后运行sql语句,还是写一个方法让他自己跑呢?如果还存在需自行插入的变记录呢?下面写个方法去跑,省事,其他语言思想类似,还可以做安装操作!<?php/** * Created by IntelliJ IDEA. * User: Mr.DJ * Date: 2020/10/30 * Time: 16:51 */namespace app\models;use yii\db\Connection;us原创 2020-11-23 10:06:05 · 209 阅读 · 0 评论 -
mysql事务隐式提交与显示提交
//代码块一 foreach ($arrCSV as $v) { $key++; $goodsId[] = $v[0]; //序号ID $goodsEmpty[] = $v[1]; //货号 $catEmpty[] = $v[2]; //分类 $drug_typeEmpty[] = $v[3];//药物类型 $nameEmpty[] = $v[4]; .原创 2020-10-27 10:34:59 · 762 阅读 · 0 评论 -
Mysql 数据库插入 1w 条数据用了多久?
最近做个批量获取客户公众号粉丝的功能,但是客户粉丝量过万的时候,需要做批量插入处理,但微信每次返回1万。微信接口文档:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html public function actionGetOpenidList() { set_time_limit(0); date_default_timezone_s原创 2020-09-07 10:20:49 · 6328 阅读 · 0 评论 -
论冗余数据的危害性
因为历史遗留问题,公司业务早期估计到数据量在不久的会非常大,于是乎在测试环境搞了几千万数据进行性能测试;但是没有删除,谁料到竟然会对生产造成了影响!多台mysql服务器负载都无法抵挡!慢查询,因为我们的系统主要是做第三方小程序开发的,商户的库存表全部都在inventory一个表;由此可见分表也是非常重要的了!SELECT COUNT(*) FROM (SELECT `g`.`id`, `g`.`name`, `g`.`price`, `g`.`original_price`, `g`.`c原创 2020-07-14 10:05:32 · 1039 阅读 · 0 评论 -
mysql服务器宕机对事务的影响以及处理方案
现在很多公司都是启用了云服务器,虽然绝大多数情况非常可靠,但是如果万一出现宕机情况怎么处理呢?mysql中事务在宕机情况下的处理机制又是怎么样的呢?未雨绸缪,方能百战百胜:针对突然宕机的问题不会自动继续执行,不会自动直接回滚,但是可以人工手动选择继续执行或者直接回滚,依据是事务日志。事务开启时,事务中的操作,都会先写入存储引擎的日志缓冲中,在事务提交之前,这些缓冲的日志都需要提前刷新到磁盘上持久化,这就是人们口中常说的“日志先行”(Write-Ahead Logging)日志分为2种redo l原创 2020-07-14 09:53:34 · 1488 阅读 · 0 评论 -
navicat中观察数据库各类情况
//查看所有数据库容量大小selecttable_schema as '数据库',sum(table_rows) as '记录数',sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'from information_schema.tablesgroup by table_schemaorder by sum(data_leng.原创 2020-06-18 17:00:56 · 1513 阅读 · 0 评论 -
偶遇公司网络问题导致navicat连接不上数据库
不知为何,企业的网络好像都不是很好,这不,公司因为网络问题,我连navicat连接线上数据库都没得玩。对于一个开发看不到数据库简直就是蛋疼,然后用手机热点,就可以访问了,后来发现ping数据库的域名超时,应该是公司DNS出问题了...原创 2020-06-17 00:57:37 · 609 阅读 · 0 评论 -
1700万数据分页优化
-- 5秒SELECT `id` , `shop_id` , `goods_no`FROM `xcxmall_inventory`WHERE 1ORDER BY `id`LIMIT 10000000 , 100-- 2.5秒SELECT `id` , `shop_id` , `goods_no`FROM xcxmall_inventoryINNER JOIN (SELECT ...原创 2020-04-25 14:12:05 · 110 阅读 · 0 评论 -
mysql之随机取N条记录
随机取N条记录,可以使用的场景是随机抽幸运儿;//sql方法一SELECT `name`FROM `xcxmall_goods` AS t1JOIN (SELECT ROUND( RAND( ) * ( (SELECT MAX( id )FROM `xcxmall_goods` ) - (SELECT MIN( id )FROM `xcxmall_goods` ) ) + (...原创 2020-04-25 12:12:09 · 224 阅读 · 0 评论 -
mysql查询之like模糊查询字符串
SELECT * FROM `xcxmall_goods` WHERE ((`store_id`=6) AND (`is_delete`=0) AND (`mch_id`=0) AND (`type`=0)) AND (`attr` LIKE '%\"no\":\"30925344\"%')//关键精髓在,保留双引号不被转义!原创 2020-04-25 00:25:49 · 533 阅读 · 0 评论 -
mysql某个字段重复次数
SELECT * FROM `xcxmall_district_0407` GROUP BY adcode HAVING //3271-3237=34select id,adcode,name,lng,lat,level,count(adcode) from xcxmall_district_0407 group by ad...原创 2020-04-08 11:19:20 · 351 阅读 · 0 评论 -
insert into select * from 一时用一直爽,出现问题这些不知道可能就跑路了
https://mp.weixin.qq.com/s/PMRR2yCM-eqOK9yafdtdHQ原创 2020-04-07 10:04:05 · 2237 阅读 · 0 评论 -
php之接口插入百万数据,关闭浏览器有用吗?
写个接口往数据库表中插入百万数据,实践说明,关闭浏览器接口还是在执行的!原创 2020-04-05 12:47:32 · 123 阅读 · 0 评论 -
动态替换表名,在封装安装系统时可以用到
$sql_user = "insert into %shis_member (user_name, password, create_time) VALUES ('".$_POST['adm_u']."','".encrypt_password2($_POST['adm_p'])."',".time().")";mysql_query(sprintf($sql_user,$data['D...原创 2020-04-05 12:45:43 · 131 阅读 · 0 评论 -
MYSQL绝世宝典!!!!
https://mp.weixin.qq.com/s/q6DiVKVbfPGP1JKlt4sWsA原创 2020-04-04 14:07:46 · 161 阅读 · 0 评论 -
mysql之存储过程
存储过程比较复杂,但基本就类似php而已,先把数据存起来,下面需要再使用!存储过程安全简单可靠,特别是那些复杂的校验的业务!原创 2020-04-02 21:13:20 · 110 阅读 · 0 评论 -
MYSQL数据库快问快答!!!!!(好东西)
MySQL数据库快问快答你在我家门口数据库开发3天前来自:掘金,作者:你在我家门口链接:https://juejin.im/post/5cabf5025188251afe0a76ad前言今天楼主给大家列一下关于数据库几个常见问题的要点,如果大家对其中的问题感兴趣,可以自行扩展研究。1、UNION ALL 与 UNION 的区别 UNION和UNION ALL关...原创 2020-03-27 22:49:21 · 136 阅读 · 0 评论 -
使用整形存储时间更好
之前在一家公司,时间的存储都是使用datetime类型,可能是为了更为直观查询数据吧,不考虑性能问题,完全就是为了是搞功能而搞功能,搞电子商务网站之后发现,使用整形存时间才是最合理的。1.使用整理存时间比较的时间速度快。2.建立索引后性能大大提高。基本使用:如查询某个时间段的数据。select count(*) from xcxmall_order where addtime>...原创 2020-03-27 22:37:21 · 184 阅读 · 0 评论 -
mysql中查询某个字段重复出现的次数
项目中,推广中心要查询推广关系,所有要使用到parent_id这个字段进行查询做假数据测试,原理类似如下:select category , count(*) AS count from publication_has_category group by category order by count DESC...原创 2020-03-25 21:02:56 · 1615 阅读 · 0 评论