视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL常用脚本_MySQL
2020-11-09 19:56:22 责编:小采
文档


导出到测试环境

大公司常有生产环境和测试环境,测试环境没法实时同步生产环境的数据,这就需要我们手工进行同步了。

备份到文件

我们不需要将生产环境的数据全量导出到测试环境,只需要满足部分条件的数据,如最近1个星期的数据,或者最近的100条数据

mysqldump -u用户名 -p密码 -h生产环境节点 数据库 数据表 --where "查询语句" --skip-lock-tables --default-character-set=utf8 --no-create-info --quick > 数据表.sql

导入到测试环境

mysql -u测试用户 -p测试密码 -h测试节点 数据库名 < Page_Stats.sql

存在则更新,不存在则插入

我们需要定期更新离线数据库,更新时,可能有重复的数据,即已经存在满足唯一性索引的数据。这个时候,如果直接删除数据库中的数据,可能引出一些BUG。mysql中有一种插入数据库的写法,如果数据不存在则插入数据,如果存在满足唯一性索引的数据,则更新相应数据

INSERT INTO table (column_1, column_2, column_3) VALUES ('column_1_value', 'column_1_value', 'column_3_value') ON DUPLICATE KEY UPDATE column_1='column_1_value', column_2='column_2_value', column_3='column_3_value';

存储优化

假如线上数据库只记录了每个广告主最新的出价信息,而我们想观察每个广告主的历史出价信息。那么每分钟记录所有广告主的出价信息的话,数据量将会非常大,这个时候,我们就需要对存储进行优化:如果该广告主出价信息没有变化,我们就不需要记录了

数据库表

表:coupon_bid_realtime
字段:coupon bid record_time
唯一索引:coupon record_time

查询所有广告主的最近出价信息

SELECT A.coupon, A.bid, A.record_time FROM coupon_bid_realtime AS A JOIN (SELECT coupon, MAX(record_time) AS record_time FROM coupon_bid_realtime GROUP BY coupon) AS B ON A.coupon = B.coupon AND A.record_time = B.record_time;

过滤没有变化的数据

根据前面查询出来的广告主的出价信息,如果广告主没有变更出价信息,则不插入

查询神器

想看自己写的查询语句是否充分利用了数据库的索引,可以使用EXPLAIN,用法EXPLAIN querySQL

下载本文
显示全文
专题