一杯甜酒
金融科技领域技术 & 云基础设施 & 云原生微服务 & 云原生时代标准交付 & PAAS 技术研发 & Kubernetes & 项目与技术管理
展开
-
Mysql学习总结(78)——MySQL各版本差异整理
Mysql 3.23集成 berkeley db存储引擎 2000年isam 升级myisam。Mysql 4.x集成 innodb引擎,支持事务,支持行锁、支持子查询 支持Unicode (UTF-8),允许更广泛地进行国际化。Mysql 5.x支持游标、存储过程、触发器、视图、XA事务Mysql 5.1支持分区和基于行的复制Mysql 5.5...原创 2019-11-27 14:47:16 · 3739 阅读 · 2 评论 -
Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
一、核心原则1、尽量不在数据库做运算俗话说:别让脚趾头想事情,那是脑瓜子的职责。作为数据库开发人员,我们应该让数据库多做她所擅长的事情。尽量不在数据库做运算,复杂运算移到程序端CPU,尽可能简单应用MYSQL。举例:在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数2、尽量控制单表数据量大家都知道单表数据量过大后会影响数据查询效率,严重情况下...原创 2019-09-12 15:51:59 · 4607 阅读 · 1 评论 -
Mysql 学习总结(89)—— Mysql 库表容量统计
统计每个库每个表的大小是数据治理中最简单的一个要求,下面从抽样统计结果及精确统计结果两方面来统计MySQL的每个库每个表的数据量情况。mysql 数据字典库 information_schema 里记录了统计的预估数据量(innodb 引擎表不准确,MyISAM 引擎表准确)及数据大小、索引大小及表碎片的大小等信息。如果想了解每个库及表的大概数据量级可以直接查 information_schema.tables 进行统计即可。原创 2023-09-20 10:33:37 · 895 阅读 · 1 评论 -
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
在 MySQL 中设计表的时候,MySQL 官方推荐不要使用 uuid 或者不连续不重复的雪花 id(long 型且唯一),而是推荐连续自增的主键 id,官方的推荐是 auto_increment,那么为什么不建议采用 uuid,使用 uuid 究竟有什么坏处?原创 2023-06-26 07:56:14 · 532 阅读 · 0 评论 -
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
一、什么是 ExplainExplain 被称为执行计划,在语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,模拟 MySQL 优化器来执行 SQL 语句,执行查询时,会返回执行计划的信息,并不执行这条 SQL。(注意,如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中)。Explain 可以用来分析 SQL 语句和表结构的性能瓶颈。通过 explain 的结果,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实际会命中、每个数据原创 2022-04-26 04:30:00 · 720 阅读 · 0 评论 -
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
前言关系型的结构化存储存在一定的弊端,因为它需要预先定义好所有的列以及列对应的类型。但是业务在发展过程中,或许需要扩展单个列的描述功能,这时,如果能用好 JSON 数据类型,那就能打通关系型和非关系型数据的存储之间的界限,为业务提供更好的架构选择。当然,很多同学在用 JSON 数据类型时会遇到各种各样的问题,其中最容易犯的误区就是将类型 JSON 简单理解成字符串类型。但当你看完这篇文章后,会真正认识到 JSON 数据类型的威力,从而在实际工作中更好地存储非结构化的数据。JSON 数据类型JSO原创 2022-02-16 07:00:00 · 578 阅读 · 0 评论 -
Mysql学习总结(85)——开发人员最应该明白的数据库设计原则
一、每个表增删改的范围尽量都在本表进行这条原则也是与三大范式有些相悖的,但这样做的好处非常明显。第一,还是从开销角度出发,这样做的话,增删改的开销通常比多表要低。第二,这样便捷开发,在数据存储过程中,如果涉及多表操作,表越多,处理业务逻辑的代码就越多,在开发时难度也就越大。第三,可维护性高,这一点和第二点有点重合,但就是因为单表设计的业务代码会相对简单,所以日后的维护也会相对容易,反之,多表的业务代码庞杂,日后的维护也会非常的困难。二、通过主键体现对应关系,且应体现流程顺序企业级应用原创 2022-01-11 10:14:16 · 323 阅读 · 0 评论 -
Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
一、如何查看同步延迟状态? 在从服务器上通过 show slave status 查看具体的参数,有几个参数比较重要:master_log_file: slave 中的IO线程正在读取的主服务器二进制日志文件的名称read_master_log_pos: 在当前的主服务器二进制日志中,slave中的IO线程已经读取的位置relay_log_file: sql线程当前正在读取和执行的中继日志文件的名称relay_log_pos: 在当前的中继日志中,sql线程已经读取和...原创 2021-08-11 14:21:22 · 299 阅读 · 0 评论 -
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
一、基于数据库实现分布式锁1.1、悲观锁利用select … where … for update 排他锁。注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。1.2、乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,是不具有互斥性,不会产生锁等待而消耗资源,操作过程中认为不存在并发冲突,只有update version失败后才能觉察到。我们的抢原创 2021-01-18 14:15:35 · 540 阅读 · 0 评论 -
Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
一、问题场景在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值是必须要插入的。二、解决思路方案一:不采用逻辑删除,直接物理删除方案二: 新建历史表主表进行物理删除,同时将删除的记录保存到历史表中方案三:取消表的唯一约束,同时引入redis来保证唯一约束取消表的唯一约束,在项目中引入redis,通过redis来判重,新增时往redis set记录,删除时,删除redis记录.原创 2020-11-23 13:51:07 · 1419 阅读 · 0 评论 -
Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
前言在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。一、Mysql和程序实例1.1.要说明这个问题,我们首先来建立三张表分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为转载 2020-09-09 13:33:57 · 354 阅读 · 0 评论 -
Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
1、统计数据库中总记录条数select sum(table_rows) from tables where TABLE_SCHEMA = 数据库名称;2、统计mysql 数据库中所有表的记录数select table_name,table_rows from information_schema.tables where table_schema='rukang_vip' order by table_rows desc;...原创 2020-05-11 08:41:07 · 2708 阅读 · 0 评论 -
Mysql学习总结(79)——MySQL常用函数总结
一、字符串函数其中字符串函数是最常用的一种函数,如果大家编写过程序,回过头去看看自己使用过的函数,可能会惊讶地发现字符串处理的相关函数在MySQL中几乎可以找到已有的函数。在MySQL中,字符串函数同样是最丰富的一类函数,下表列出了常用的字符串函数。二、数值函数MySQL的数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,用户在编写有关数值运算方面的...原创 2020-02-22 18:19:32 · 934 阅读 · 0 评论 -
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
前言对于MySQL执行计划的获取,我们可以通过explain方式来查看,explain方式看似简单,实际上包含的内容很多,尤其是输出结果中的type类型列。理解这些不同的类型,对于我们SQL优化举足轻重。今天主要介绍一下常见的type结果及代表的含义,并且通过同一个SQL语句的性能差异,说明建对索引多么重要。Explain结果中的type字段代表什么意思?MySQL的官网解释非常简洁,只用了3...原创 2019-07-23 11:18:25 · 1480 阅读 · 1 评论 -
Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)新库使用utf8mb4字符集解读:万国码,无需转码,无乱码风险,节省空间(3)数据表、数据字段必须加入中文注释解读:N年后谁tm知道这个r1,r2,r3字段是干嘛的(4)禁止使用存储过程、视图、触发器、Event解读:高并发大数据的互联网...原创 2019-06-26 14:22:35 · 5779 阅读 · 19 评论 -
Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
背景今天只讨论一种应用模式,就是最普遍的,前端实时调用后端Web服务,服务端经过DB的增删改查作出响应的应用。至于离线数据分析,在线规则引擎模板执行,流式计算等不在本次讨论范畴。一、重SQL还是重Java的开发场景演示先看一个例子吧,需求是:查询出每个学生所在的城市名以及分数展示到前端。用经典的Controller、Service、DAO开发模式描述,设计数据库表如下:(1)重...转载 2019-06-21 15:54:37 · 647 阅读 · 0 评论 -
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程select rcr.* from raw_credit_request as rcr where rcr.client_order_id not in (select co.client_order_id from credit_order as co);select...原创 2019-04-10 15:01:01 · 2706 阅读 · 0 评论 -
Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程一、数据库命令规范1、所有数据库对象名称必须使用小写字母并用下划线分割2、所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)3、数据库对象的命名要能做到见名识意,并且最后不要超过32个字符4、临时库表必须以tmp_为...原创 2019-03-20 10:17:46 · 663 阅读 · 0 评论 -
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程-- 查找表中多余的重复记录,重复记录是根据单个字段来判断select * from loan_collection_task where loan_case_id in (select loan_case_id from loan_collection_task group ...原创 2019-03-13 13:59:18 · 559 阅读 · 0 评论 -
Mysql学习总结(70)——MySQL 优化实施方案
1.1 前言 在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。 图 - MySQL查询过程1.2 优化的哲学优化有风险,涉足需谨慎1.2.1 优化可能带来的问题优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。优化手段本来就有很大的风...转载 2019-02-14 15:01:43 · 889 阅读 · 0 评论 -
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。使用方法,在select语句前加上explain就可以了。如:1、EXPLAIN TABLE_NAME:EXPLAIN TABLE_NAME是DESCRIBE TABLE_NAME或SHOW COLUMNS FROM TABLE_NAME的一个同义词。2、EXP...原创 2019-01-29 19:03:50 · 468 阅读 · 0 评论 -
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
-- 查询每天的数据 SELECT COUNT(1) AS total, DATE_FORMAT(created_time,'%Y-%m-%d') AS days FROM task_execution GROUP BY days desc;-- 查询每周的数据SELECT COUNT(1) AS total, WEEK(created_time) AS we...原创 2019-01-22 09:55:09 · 3820 阅读 · 1 评论 -
Mysql学习总结(67)——MYSQL慢查询日志
一、简介 MySQL提供了错误日志、二进制日志、查询日志、慢查询日志。 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。二、慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long...原创 2018-12-11 10:53:28 · 832 阅读 · 0 评论 -
Mysql学习总结(66)——设置MYSQL数据库编码为UTF-8
1、 编辑MySql的配置文件MySql的配置文件Windows下一般在系统目录下或者在MySql的安装目录下名字叫my.ini,可以搜索,Linux下一般是/etc/my.cnf--在 [mysqld] 标签下加上以下内容:default-character-set = utf8character_set_server = utf8注意:如果此标签下已经存在“default...原创 2018-11-28 10:11:05 · 604 阅读 · 0 评论 -
Mysql学习总结(65)——项目实战中常用SQL实践总结
(1)负向条件查询不能使用索引select x1, x2 from order where status!=0 and stauts!=1not in/not exists都不是好习惯可以优化为in查询:select x1, x2 from order where status in(2,3)(2)前导模糊查询不能使用索引select x1, x2 from order wh...原创 2018-11-22 11:26:34 · 1274 阅读 · 0 评论 -
Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
#以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取这些值。需要在MySQL客户端库初始化的时候指定这些选项。[client]port = 3309socket = /usr/local/mysql/tmp/mysql.sock[mysqld]!include /usr/local/mysql/etc/...原创 2018-11-13 14:10:27 · 695 阅读 · 0 评论 -
Mysql学习总结(63)——Mysql数据库架构方案选择与分析
一、数据库架构原则高可用 高性能 一致性 扩展性二、常见的架构方案方案一:主备架构,只有主库提供读写服务,备库冗余作故障转移用jdbc:mysql://vip:3306/xxdb高可用分析:高可用,主库挂了,keepalive(只是一种工具)会自动切换到备库。这个过程对业务层是透明的,无需修改代码或配置。 高性能分析:读写都操作主库,很容易产生瓶颈。大部分互联网应用读...转载 2018-10-23 13:35:13 · 1325 阅读 · 0 评论 -
Mysql学习总结(62)——MySQL连接com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link问题
数据库出现如下连接问题com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received an...原创 2018-10-22 17:23:16 · 1369 阅读 · 0 评论 -
Mysql学习总结(61)——MySQL优化之DBA级优化整理汇总
数据库优化的可以从如下几个方面着手:1.>sql语句和索引.2.>数据库表结构.3.>系统配置.4.>硬件2.使用MySQL的慢查询日志对效率有问题的sql进行监控1.>查看慢查询日志是否开启:show variables like 'slow_query_log' 2.>根据查看出来的日志存放路径,开启慢查询日志set glob...原创 2018-10-15 13:16:38 · 1769 阅读 · 0 评论 -
Mysql学习总结(60)——并发量大、数据量大的互联网业务数据库设计规范总结
一、基础规范(1)必须使用InnoDB存储引擎解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高(2)表字符集默认使用utf8,必要时候使用utf8mb4解读:(1)通用,万国码,无需转码,无乱码风险,节省空间,汉字3字节,英文1字节;(2)utf8mb4是utf8的超集,有存储4字节例如表情符号时,使用它。(3)数据表、数据字段必须加入中文注释...原创 2018-09-28 09:52:34 · 4380 阅读 · 0 评论 -
Mysql学习总结(59)——数据库分库分表策略总结
一、为什么分库分表我们知道每台机器无论配置多么好它都有自身的物理上限,所以当我们应用已经能触及或远远超出单台机器的某个上限的时候,我们惟有寻找别的机器的帮助或者继续升级的我们的硬件,但常见的方案还是通过添加更多的机器来共同承担压力。我们还得考虑当我们的业务逻辑不断增长,我们的机器能不能通过线性增长就能满足需求?因此,使用数据库的分库分表,能够立竿见影的提升系统的性能,关于为什么要使用数据库的分...原创 2018-09-03 16:00:10 · 7171 阅读 · 0 评论 -
Mysql学习总结(58)——深入理解Mysql的四种隔离级别
一、前言开发工作中我们会使用到事务,那你们知道事务又分哪几种吗?MYSQL标准定义了4类隔离级别,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低的隔离级一般支持更高的并发处理,并拥有更低的系统开销。下面通过这篇文章我们来一起深入理解Mysql中的四种隔离级别。二、首先什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有...原创 2018-06-21 15:14:48 · 5556 阅读 · 0 评论 -
Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
--------------查"当天"的数据-----------------SELECTew.orderid,ew.carid,ew.userid,ew.`status`,ew.reservetime,ew.starttime,ew.endtime,ew.canceltime,eu.nickname, ec.plateidFROMevlib_workorder ewLEFT JOI...转载 2018-04-12 16:27:36 · 2375 阅读 · 0 评论 -
Mysql学习总结(56)——MySQL用户管理和权限设置
用户管理mysql>use mysql;查看mysql> select host,user,password from user ;创建mysql> create user zx_root IDENTIFIED by 'xxxxx'; //identified by 会将纯文本密码加密作为散列值存储修改mysql>rename user feng to newuser;//m原创 2018-04-04 12:20:48 · 2266 阅读 · 0 评论 -
Mysql学习总结(55)——MySQL 语句大全再温习
1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'--- 开始 备份BACKUP原创 2018-02-02 13:27:21 · 1300 阅读 · 0 评论 -
Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
前言高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。对于一个系统而言,可能包含很多模块,比如前端应用,缓存,数据库,搜索,消息队列等,每个模块都需要做到高可用,才能保证整个系统的高可用。对于数据库服务而言,高可用可能更复杂,对用户的服务可用,不仅仅是能访问,还需要有正确性保证,因此数据库的高可用方案是一直以来的讨论热点,今天就各种的高可用方案,谈一下个人的一些看法原创 2018-01-11 11:19:31 · 5464 阅读 · 0 评论 -
Mysql学习总结(53)——使用MySql开发的Java开发者规范
在Java应用开发中深知数据库的重要性,绝大多数情况下数据库的性能决定了程序的性能,前期如果埋下的坑越多到后期会成为整个程序的瓶颈,所以希望Java开发者一定要重视。一、基础规范1、使用InnoDB存储引擎支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高2、推荐使用utf8mb4字符集无需转码,无乱码风险, 支持emoji表情以及部分不常见汉字3、表、字段必须加注释除了建表原创 2017-12-27 11:28:26 · 960 阅读 · 0 评论 -
Mysql学习总结(52)——最全面的MySQL 索引详解
什么是索引?1、索引索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。2、索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度索引的优点是可以提高检索数据的速度索引的缺点是创建和原创 2017-12-25 13:11:46 · 1180 阅读 · 0 评论 -
Mysql学习总结(51)——Linux主机Mysql数据库自动备份
假定Mysql环境:MySQL 安装位置:/usr/local/mysq论坛数据库名称为:bbsMySQL root 密码:123456数据库备份目的地:/var/db_backup/#! /bin/bash/usr/local/mysql/bin/mysqladmin -u root –password=123456 shutdown/usr/local/mysql/bin/mysq原创 2017-12-15 09:22:55 · 827 阅读 · 0 评论 -
Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
1,这三个数据库不是同一个公司的产品;2、其所对应的使用对象也不一样,oracle是主流的大型数据库,大多数电信项目都是使用的oracle,而sqlserver与mysql主要是个人以及小型公司使用的的数据库,但是sqlserver需要收费,mysql不用;3、如果按功能上来说,oracle最为强大,oracle支持递归查询,二后两者不支持;4、三个数据库中,只有sqlserver有完整的图形化操转载 2017-11-26 11:55:19 · 1489 阅读 · 0 评论