574 天前 / Ray_Harry
1.Mysql 如何支持 UTF8 1.1.Mysql Server 端配置 原来 mysql 支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。 Mysql 从 5.5.3 开始支持,通过 utf8mb4(UTF-8most bytes 4)字符集支持 4-byte 的 UTF8 字符。 1.2.JDBC 对 utf8mb4 的支持在服务端支持 utf8mb4 之后,JDBC 客户端也相应的进行了升级。从笔者最近的实践来看,建议使用 5.1.47 以上版本。 官方对 JDBC 驱动的说明如下: JDBC client 与 Mysqlserver 默认是自动进行检测的。
578 天前 / mylxsw
[TOC] 概述在早期的 MySQL 版本中,DDL 操作(如创建索引等)通常都需要对数据表加锁,操作过程中 DML 操作都会被阻塞,影响正常业务。MySQL 5.6 和 MariaDB 10.0 开始支持 Online DDL,可以在执行 DDL 操作的同时,不影响 DML 的正常执行,线上直接执行 DDL 操作对用户基本无感知(部分操作对性能有影响)。 不同版本的数据库对各种 DDL 语句的支持存在一定的差异,本文将会针对 MySQL 和 MariaDB 对 Online DDL 的支持情况做一个汇总,在需要执行 DDL 操作时,可以参考本文的 Online DDL 支持情况 部分。
580 天前 / 后场技术
现在 MySQL 8 和 PostgreSQL 10 已经发布,现在是重新审视两个主要的开源关系数据库如何相互竞争的好时机。 在这些版本之前,一般的看法是,虽然 Postgres 在功能集及血统方面更胜一筹,但 MySQL 在大规模并发读 / 写操作方面进行了更多的大规模测试。 但是随着最新版本的发布,两者之间的差距已大大缩小。 功能对比下面看一下通常我们认为比较时髦的功能。 特征 MySQL8PostgreSQL10「查询和分析」 通用表达式 (CTEs) New视窗功能 New「数据类型」 支持 JSON ImprovedGIS / SRS Improved全文搜索「扩展性」 逻辑复制 New 半同步复制 New 声明式分区 New 过...
581 天前 / 影浅
前言 目前,出于对数据库产品高安全和高可用的要求,银行业在现有核心业务系统中选用的一般为国际大型厂商的成熟产品,如 IBM 的 DB2、甲骨文的 Oracle、微软的 SQL Server 等。但随着业务的不断发展,银行业对数据库产品的需求已经逐渐多样化:一方面要能满足业务系统的基本需求,另一方面对于数据安全、自主掌控的要求也越来越高。鉴于此,不少银行业已经开始了自己的转型尝试,并取得了一定的成果。 MySQL 作为当前最热门的开源数据库,已被互联网公司广泛应用。基于对数据库安全可控的考虑,银行业也正在进行较大规模的推广,用于替代传统数据库产品。
586 天前 / Ccww
欢迎关注公众号【Ccww 技术博客】,原创技术文章第一时间推出越努力,越幸运, 本文已收藏在 GitHub 中 JavaCommunity, 里面有面试分享、源码分析系列文章,欢迎收藏,点赞 https://github.com/Ccww-lx/JavaCommunity 前言在面试中,基本上都会问到关于数据库的事务问题,如果啥都不会或者只回答到表面的上知识点的话,那面试基本上是没戏了,为了能顺利通过面试,那 MySql 的事务问题就需要了解,所以就根据网上的资料总结一版 Mysql 事务的知识点,巩固一下事务的知识。
591 天前 / Turling
前言如果数据库中的事务都是串行执行的,这种方式可以保障事务的执行不会出现异常和错误,但带来的问题是串行执行会带来性能瓶颈;而事务并发执行,如果不加以控制则会引发诸多问题,包括死锁、更新丢失等等。这就需要我们在性能和安全之间做出合理的权衡,使用适当的并发控制机制保障并发事务的执行。 并发事务带来的问题首先我们先来了解一下并发事务会带来哪些问题。并发事务访问相同记录大致可归纳为以下 3 种情况: 读 - 读:即并发事务相继读取同一记录; 写 - 写:即并发事务相继对同一记录做出修改; 写 - 读或读 - 写:即两个并发事务对同一记录...
598 天前 / Allon
MYSQL logstash 同步增量数据到 ES 最近一段时间,在使用 mysql 通过 logstash-jdbc 同步数据到 es,但是总是会有一定程度数据丢失。logstash-jdbc 无非是通过 sql 遍历数据表的所有数据,然后同步到 es。 对于表里面的所有字段都需要查出来然后同步到 es 中去。本地测试数据表结构如下: CREATETABLE`user`( `id`bigint(20)NOTNULLAUTO_INCREMENT, `username`varchar(32)CHARACTERSETutf8NOTNULL, `upnum`decimal(20,0)NOTNULL, `last_update_time`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP, PRIMARYKEY(`id`), KEY`last_update_...
608 天前 / 影浅
| 作者沈启超,19 年硕士毕业于东南大学,目前在腾讯 CSIG 企业产品部担任后台开发,同时也参与公司内部存储开源组件 MySync 的开发。 前言:MySQL 架构体系 首先分享实验前的基础知识,MySQL 主要分为 Server 层与存储引擎层。 Server 层主要包含连接器、检索内存、分析器、优化器、执行器等,所有跨存储引擎的功能均于这一层构建,例如存储过程、触发器、视图,函数等,有一个标准化的 binglog 日志模块。 存储引擎负责数据的存储与存取,使用可更换的插件式架构,拥有 InnoDB、MyISAM、Memory 等多个存储引擎,其中 InnoDB 引擎有 redo log 日志模块。
610 天前 / Howie6879
“好多年前学生时代的文章,遥远的回忆;突然被找了出来,于是顺手把里面的图文都修复了,发文留存~ ”一、基本操作第一部分,主要介绍对数据库以及表的一些基本操作 1-1.关于数据库 // 创建数据库 create database h_test; // 查看数据库 show databases; // 查看数据库信息 show create database h_test; // 修改数据库的编码,可使用上一条语句查看是否修改成功 alter database h_test default character set gbk collate gbk_bin; // 删除数据库 drop database h_test; // 综上...
612 天前 / 虞大胆
前几天看到 bug 群有连续的问题,就感觉不对劲,第一反应是不是数据库有延迟,可没收到报警,监控系统上的 Seconds_Behind_Master 指标也没有问题。 后来同事给了 sql 语句,每台副库登陆查询了下,发现有一台数据查询不全,仔细看才发现 Slave_IO_Running 和 Slave_SQL_Running 指标都显示 No,也就是说副库的同步进程没有开启。 start slave 启动后解决问题,思考了下为什么会出现问题。查看 mysqld 的错误日志: 2022-09-26 12:08:44 17934 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL ...
617 天前 / arstercz
问题说明在通过 SELECT DISTINCT 进行查询的时候发现结果一直返回空, 然而通过 SELECT 却能返回正常的结果, 如下所示: -- Server version: 5.6.38-83.0-log Percona Servermysql > select distinct(name) from t_web_column where column_id IN (946390, 946391, 946392, 946393);Empty set (0.00 sec)mysql > select name from t_web_column where column_id IN (946390, 946391, 946392, 946393);+------+| name |+------+| Test || Test || Test || Test |+------+ 表结构则相对简单, 通过 EXPLAIN 查看...
617 天前 / 咖啡拿铁
背景不知道是否你还在为下面的问题而困扰: 当你使用了 redis 或者其他中间件做缓存的时候,经常发现缓存和数据库的数据不一致,只能通过定时任务或者缓存过期的方式去做一些限制。当你使用了 ES 做搜索工具,使用双写的那一套方法,还在为 ES 和数据库不是一个事务而担忧。当你需要迁移数据的时候,也还在使用双写的方法,如果是同一个数据库的还好,如果是不同数据库就不能保证事务,那么数据一致性也是个问题,就会写很多的修复 Job 和检查 Job。
626 天前 / 猿天地
转自:烟雨星空,作者:烟雨星空前言最近,有一个业务需求,给我一份数据 A ,把它在数据库 B 中存在,而又比 A 多出的部分算出来。由于数据比较杂乱,我这里简化模型。 然后就会发现,我去,这不就是 not in ,not exists 嘛。 那么问题来了,in, not in , exists , not exists 它们有什么区别,效率如何? 曾经从网上听说,in 和 exists 不会走索引,那么事实真的是这样吗? 带着疑问,我们研究下去。 注意: 在说这个问题时,不说明 MySQL 版本的都是耍流氓,我这里用的是 5.7.18 。 用法讲解为了方便,我们创建两张表 t1 和 t2 。并分别加入一些数据。
633 天前 / 杀死那个程序员
点击上方"程序员历小冰",选择“置顶或者星标” 你的关注意义重大! 在《MySQL 常见语句加锁分析》一文中,我们详细讲解了 SQL 语句的加锁原理并具体分析了大部分的简单 SQL 语句,但是实际业务场景中 SQL 语句往往及其复杂,包含多个条件,此时就需要具体分析 SQL 使用到的索引,并了解 where 条件的判断逻辑。 我们可以直接使用 explain 或者 optimizer_trace 来分析 SQL 语句执行使用了哪些索引,具体使用可以看本系列文章的前两篇文章。
634 天前 / KevinYan
读锁的概念和区别如果在 MySQL 的事务里查询数据,然后在同一事务中插入或更新相关数据,常规的 SELECT 语句不能提供足够的保护。其他并行的事务可以更新或删除第一个事务里刚查询的相同行。InnoDB 支持两种类型的读锁,提供了额外的安全性: SELECT ... LOCK IN SHARE MODE 在读取到的行上设置共享锁。其他会话可以读取行,也可以继续给行加共享锁,但是在当前事务提交之前其他会话不能修改加了共享锁的行。如果这些行中的任何一个被尚未提交的另一个事务更改,则当前查询将等待直到该事务结束,然后使用最新值。