MySQL
一共52篇文章
专题:第12期
-
MySQL如何设置事务的开启、禁用自动提交
参考答案 MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION)。否则每条 SOL 语句都会被当做一个单独的事务自动执行。 但有些情况下,我们需要关闭事务自动提交来保证数据的一致性。 一、设置事务自动提交模式 实例: mysql> SHOW VARIABLES LIKE 'autocommit'; +…...- 宝妹儿
- 68
- 0
-
MySQL默认的事务隔离级别是什么
参考答案 MySQL的4个事务隔离级别: MySQL默认的事务隔离级别: MySQL 的默认事务隔离级别是 Repeatable Read(可重复读)。 Repeatable Read(可重读) 可以完全保证事务的隔离性要求,即达到了 SQL标准的SERIALIZABLE(可串行化)隔离级别,InnoDB 存储引擎默认使用 Repeatable Read(可重读),不会有任何性能损失。  …...- 宝妹儿
- 199
- 0
-
MySQL有哪些事务隔离级别
参考答案 MySQL的4个事务隔离级别: 1. READ-UNCOMMITTED(读取未提交) 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。 2. READ-COMMITTED(读取已提交) 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。 3. REPEATABLE-READ(可重复读) 对同一字段的多次读取结果都是一致的,…...- 宝妹儿
- 130
- 0
-
MySQL的高可用方案有哪些
参考答案 本篇详解:MySQL的高可用方案选型,MySQL的5个常见高可用方案、以及其各自的优缺点。 一、 MySQL的高可用方案选型 在考虑MySQL数据库的高可用的架构时,主要参考如下几个方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持…...- 宝妹儿
- 152
- 0
-
MySQL分区表有哪些限制因素
参考答案 MySQL分区表的限制因素: 1. 禁止构建 分区表达式不支持以下几种构建: 存储过程,存储函数,UDFS或者插件。 声明变量或者用户变量。 2. 算术和逻辑运算符 分区表达式支持+,-,*算术运算,但是不支持DIV和/运算。 3. 服务器SQL模式 如果要用用户自定义分区的表,在创建分区表时的SQL模式是不保留的。 4. 文件系统操作 分区或者重新分区(比如ALTER…...- 宝妹儿
- 136
- 0
-
MySQL支持的分区类型有哪些
参考答案 MySQL支持的分区类型: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。 LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。 HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。 KEY…...- 宝妹儿
- 94
- 0
-
MySQL分库分表会产生哪些问题
参考答案 分库分表能有效的环节单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、连接数的瓶颈,同时也带来了一些问题。 MySQL分库分表会产生的问题如下: 1. 事务一致性问题 1) 分布式事务 当更新内容同时分布在不同库中,不可避免会带来跨库事务问题。跨分片事务也是分布式事务,没有简单的方案,一般可使用"XA协议"和"两阶段提交"处理。 分布式事…...- 宝妹儿
- 107
- 0
-
MySQL分库分表工具有哪些?
参考答案 1. 金山的Kingshard https://github.com/flike/kingshard/blob/master/README_ZH.md 2. 百度的heisenberg https://github.com/brucexx/heisenberg 3. 58同城的Oceanus https://github.com/58code/Ocean…...- 宝妹儿
- 19
- 0
-
MySQL分库分表怎么操作
参考答案 一、MySQL分库分表的原因 随着用户的增多,当数据量大到一定程度,仅一张表的数据可能就超过千万时,执行查询或修改等操作就比较耗时,这时就需要进行数据库切分的操作。 二、MySQL分库分表的方式 1. MyBatis实现分表最简单步骤 1)模拟用户表数据量已超过千万。 2)用户表原来的名字叫做user_tab,我们切分为user_tab_0和user_tab_1,这样就能把原来千万的数…...- 宝妹儿
- 88
- 0
-
MySQL为什么要分库分表
参考答案 使用分库分表的3个原因: 1. 性能 关系型数据库多以B+树类型的索引,在数据量超过阈值的情况,索引深度的增加使得磁盘访问的IO次数增加,导致性能下降,同时,高并发访问使得集中数据库成为系统瓶颈。 2. 可用性 服务化的无状态型,能够达到较小成本的随意扩容,导致系统的最终压力都落到数据库上。 3. 运维成本 当一个数据库实例中的数据达到阈值,对于DBA的运维压力就会增大。 &n…...- 宝妹儿
- 79
- 0
-
MySQL死锁怎么排查
参考答案 死锁异常,一般要在特定时间、特定数据和特定业务操作才会复现。 例如,线上业务复杂,各种业务操作之间可能会产生锁冲突,有些就会导致死锁异常。 出现MySQL死锁问题,可以按照以下思路来排查处理。 一、MySQL死锁排查思路及步骤 线上错误日志报警发现死锁异常。 查看错误日志的堆栈信息。 查看 MySQL 死锁相关的日志。 根据 binlog 查看死锁相关事务的执行内容。 根据上述信息找出两…...- 宝妹儿
- 59
- 0
-
MySQL产生死锁有哪些必要条件
参考答案 MySQL产生死锁的4个必要条件: 1. 互斥条件 资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待直到资源被占有者释放。 2. 不可剥夺条件 进程所获得的资源在未使用完毕之前,不被其他进程强行剥夺,而只能由获得该资源的进程资源释放。 3. 请求和保持条件 进程每次申请它所需要的一部分资源,…...- 宝妹儿
- 21
- 0