小编Din*_*mar的帖子

Mysql中Text和Varchar的性能差异

我正在 mysql 5.7 中试验 text 和 varchars。我创建了一个简单的 mysql 表,如下所示

创建表small_table(
   pkint(11) NOT NULL AUTO_INCRMENT,
   varcvarchar(255) DEFAULT NULL,
   txttext,
  首要的关键 (pk)
) 引擎=InnoDB AUTO_INCRMENT=103925 默认字符集=utf8

该表大约有 100k 行。

我已经执行了以下查询并对两者进行了分析

查询 1(对 varchar 列进行分组)

通过varc从small_table组中选择varc,count(*);

配置文件 1 结果

+----------------------+----------+
| 状态 | 持续时间 |
+----------------------+----------+
| 开始| 0.000064 | 0.000064
| 检查权限 | 0.000004 |
| 开桌 | 0.004812 |
| 初始化| 0.000026 | 0.000026
| 系统锁| 0.000005 | 0.000005
| 优化| 0.000006 | 0.000006 …

performance varchar temporary-tables mysql-5.7

5
推荐指数
1
解决办法
2万
查看次数

Mysql 中“ON-DELETE-CASCADE”和“ON-DELETE-RESTRICT”约束混合的标准行为

mysql 5.6中,考虑这 2 个在 A、B、C 和 D 之间创建关系的示例。

实施例1

CREATE TABLE `a` (
    id INT UNSIGNED NOT NULL,
    PRIMARY KEY (id)
) ENGINE = INNODB;

CREATE TABLE `b` (
    id INT UNSIGNED NOT NULL,
    a INT UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (a) REFERENCES a (id) ON DELETE CASCADE
) ENGINE = INNODB;

CREATE TABLE `c` (
    id INT UNSIGNED NOT NULL,
    a INT UNSIGNED NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (a) REFERENCES a (id) …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-key delete sql-standard cascade

5
推荐指数
1
解决办法
593
查看次数

Mysql 中已提交读隔离级别中的间隙锁定

MYSQL VERSION : 5.7.X
STORAGE ENGINE : Innodb
Run Code Online (Sandbox Code Playgroud)

我有一个大致的想法,即 Read Committed Isolation 将主要使用 Shared and Exclusive Record Locks。但是,根据 mysql docs,在某些情况下,甚至 Read Committed 也必须使用间隙锁定

READ COMMITTED ..... 对于锁定读取(SELECT with FOR UPDATE 或 LOCK IN SHARE MODE)、UPDATE 语句和 DELETE 语句,InnoDB 只锁定索引记录,而不锁定它们之前的间隙,因此允许自由插入新记录在锁定的记录旁边。间隙锁定仅用于外键约束检查和重复键检查。

恕我直言,只有记录锁就足够了。谁能解释一下 Gap 锁定的场景以及为什么 mysql 会这样做?

mysql innodb transaction locking isolation-level

5
推荐指数
2
解决办法
1645
查看次数

更新查询 (Postgres) 中 Set 子句的执行顺序

我最近在 Postgres 中遇到了这种奇怪的行为。我有一张像下面这样的表:

sasdb=# \d emp_manager_rel 
           表“db3004db.emp_manager_rel”
   专栏 | 类型 | 整理 | 可空 | 默认
------------+--------+-----------+------------+----- ----
 emp_id | bigint | | |
 manager_id | bigint | | |

select * from emp_manager_rel ;
 emp_id | manager_id
--------+------------
      1 | 123

我执行了以下更新语句:

更新1:

更新 emp_manager_rel 设置 manager_id = manager_id+emp_id , emp_id=emp_id*4;

更新表格如下:

emp_id | manager_id
--------+------------
      4 | 124

更新 2:我执行了以下查询(在原始表上,而不是在更新表上)

更新 emp_manager_rel 设置 emp_id=emp_id*4 , manager_id = manager_id+emp_id ;

它更新表格如下:

emp_id | manager_id
--------+------------
      4 | 124

我期望 …

postgresql update sql-standard

4
推荐指数
1
解决办法
1623
查看次数

utf8_bin 和 utf8_general_cs 是一样的吗?

这是情况:

  1. 我遇到了几个关于“ utf8_bin vs utf8_general_ci ”的帖子。
  2. 同样,“ utf8_general_cs vs utf8_general_ci ”。

但是我找不到“ utf8_bin vs utf8_general_cs ”的帖子。那么,它们是一样的吗?如果不是,它们之间有什么区别?

注意:我已经检查过utf8_general_cs在默认 MySQL 中不可用。我可以知道为什么吗?

mysql collation utf-8

3
推荐指数
1
解决办法
2025
查看次数