小编Rol*_*DBA的帖子

INSERT 会自动提交吗?

我们的应用程序向 MySQL 数据库发出 INSERT 查询以添加记录。我想知道记录是否被自动提交。如果我运行 ROLLBACK 命令,数据库何时执行回滚?在 COMMIT 之后是否可以回滚?

mysql innodb

13
推荐指数
2
解决办法
4万
查看次数

mysqldump 可以转储触发器和程序吗?

有没有办法制作一个 mysqldump 来保存指定数据库中的所有触发器和过程?

前段时间我读到这mysqldump也将保存我的触发器,但它看起来不像。我的第二个相关问题是如果触发器存在,我如何检入 sql 文件?

mysql mysqldump trigger backup stored-procedures

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

包相对于独立的过程和函数有什么好处?

寻找一个规范的答案来回答为什么包应该在 Oracle 数据库中比独立的过程和函数更受欢迎。

oracle plsql

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

mysqldump 命令是否还会备份 DB 中存在的所有视图,或者是否有特殊命令?

我正在尝试备份我的整个数据库以及视图。我将使用mysqldump命令。我想知道这是否会复制所有视图,或者我将不得不使用单独的命令。

请给我一个答案。任何帮助是极大的赞赏。

mysql mysqldump backup view

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

是否有任何 MySQL 基准测试工具?

我很久以前就听说有这个工具可以帮助您调整 mysql 设置以获得更好的性能,但我无法找到它。我知道我可以使用 ab for apache 来模拟高流量,它会生成一个慢日志。但是,如果它崩溃(已经发生并且处于生产模式),我不知道它为什么崩溃以及是否可以从配置中调整它。

mysql benchmark configuration

12
推荐指数
1
解决办法
7795
查看次数

什么是 Key Preserved Table 概念?

我在更新连接视图部分中阅读了有关密钥保留表的 Oracle 文档。

但是,我没有找到任何简单的方法来理解它。

我希望收到一些简单的概念细节,而不是 Oracle 官方文档。

oracle

12
推荐指数
2
解决办法
3万
查看次数

为什么全文搜索返回的行数少于 LIKE

我没有按照我的意愿进行全文搜索,而且我不明白结果列表中的差异。

示例语句:

SELECT `meldungstext`
FROM `artikel`
WHERE `meldungstext` LIKE '%punkt%'
Run Code Online (Sandbox Code Playgroud)

返回 92 行。我在meldungstext 列中收到具有匹配项的行,例如“Punkten”、“Zwei-Punkte-Vorsprung”和“Treffpunkt”。

我在“meldungstext”列上设置了全文索引并尝试了这个:

SELECT `meldungstext`
FROM `artikel`
WHERE MATCH (`meldungstext`)
AGAINST ('*punkt*')
Run Code Online (Sandbox Code Playgroud)

这仅返回 8 行。我只收到与“Punkt”本身或我认为在“i-Punkt”中被视为“Punkt”的单词匹配的行。

然后我尝试了布尔模式:

SELECT `meldungstext`
FROM `artikel`
WHERE MATCH (`meldungstext`)
AGAINST ('*punkt*' IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

返回 44 行。我收到的行在列 meldungstext 中包含“Zwei-Punkte-Vorsprung”或“Treffpunkt”,但没有包含“Punkten”的行。

为什么会发生这种情况,如何设置“完全”工作的全文搜索以防止在 where 子句中使用 LIKE '%%'?

mysql myisam full-text-search

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

为什么默认 character_set_server 是 latin1?

我正在使用 MySQL 5.5,当我显示有关字符集的变量时,我有

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
Run Code Online (Sandbox Code Playgroud)

我是否需要将character_set_database和更改character_set_serverutf8

mysql percona character-set mysql-5.5 utf-8

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

即使在 READ COMMITTED 中,MySQL InnoDB 也会在删除时锁定主键

前言

我们的应用程序运行多个DELETE并行执行查询的线程。查询影响孤立的数据,即不应该存在并发DELETE发生在来自不同线程的相同行上的可能性。但是,根据文档,MySQL 对DELETE语句使用所谓的“next-key”锁,它同时锁定匹配的键和一些间隙。这会导致死锁,我们找到的唯一解决方案是使用READ COMMITTED隔离级别。

问题

DELETE使用JOIN大表执行复杂语句时会出现问题。在特定情况下,我们有一个带有警告的表,只有两行,但查询需要从两个单独的INNER JOINed 表中删除属于某些特定实体的所有警告。查询如下:

DELETE pw 
FROM proc_warnings pw 
INNER JOIN day_position dp 
   ON dp.transaction_id = pw.transaction_id 
INNER JOIN ivehicle_days vd 
   ON vd.id = dp.ivehicle_day_id 
WHERE vd.ivehicle_id=? AND dp.dirty_data=1
Run Code Online (Sandbox Code Playgroud)

当 day_position 表足够大时(在我的测试用例中有 1448 行),那么即使使用READ COMMITTED隔离模式,任何事务也会阻塞整个 proc_warnings表。

该问题始终在此示例数据上重现 - http://yadi.sk/d/QDuwBtpW1BxB9在 MySQL 5.1(在 5.1.59 上检查)和 MySQL 5.5(在 MySQL 5.5.24 上检查)中。

编辑:链接的示例数据还包含查询表的架构和索引,为方便起见,在此处复制:

CREATE TABLE  `proc_warnings` (
    `id` int(11) NOT NULL AUTO_INCREMENT, …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.5 locking isolation-level

12
推荐指数
1
解决办法
6876
查看次数

获取 MySQL 数据库架构备份所需的最低权限是什么?

获取 MySQL 数据库架构备份所需的最低权限是什么?我只对模式感兴趣,对数据不感兴趣。

是否需要 SELECT 权限?

mysql mysqldump backup

12
推荐指数
1
解决办法
9534
查看次数