小编Rol*_*DBA的帖子

什么是阻塞以及它是如何发生的?

我试图在 SQL Server 中找到一些关于阻塞的信息,但我找不到关于它是什么以及它是如何发生的简明解释。你能帮我解惑吗?

sql-server locking

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

为什么主键有自己的名字?

从数学的角度来看,假设一个表最多有一个主键,通过任意名称而不是简单的表属性来引用主键似乎是一种短视的设计决定。

因此,要将主键从非集群更改为集群,反之亦然,您必须首先搜索其名称,而不是删除它并最终读取它。

使用我看不到的任意名称是否有一些优势,或者 DBMS 是否不使用任意名称作​​为主键?

编辑 2011-02-22 (对于那些不想在那里排序的人,2011 年 2 月 22 日):

让我展示一个函数,您可以使用它从表名中导出主键的名称(使用早期的 sql-sever 又名 sybase 系统表):

create function dbo.get_pk (@tablename sysname)
returns sysname
as
begin
    return (select k.name
    from sysobjects o 
        join sysobjects k   on k.parent_obj = o.id 
    where o.name = @tablename
    and o.type = 'U'
    and k.type = 'k')
end
go
Run Code Online (Sandbox Code Playgroud)

正如 gbn 所说,当您不提供明确的名称时,没有人真正喜欢生成的名称:

create table example_table (
    id int primary key
)

select dbo.get_pk('example_table')  
Run Code Online (Sandbox Code Playgroud)

我刚得到

PK__example___3213E83F527E2E1D
Run Code Online (Sandbox Code Playgroud)

但是为什么 sysobjects 中的名称必须是唯一的。对表及其主键使用完全相同的名称是完全可以的。

这样做,我们不需要设置命名约定,这可能会被意外违反。

现在回答玛丽安:

  1. 我仅使用将集群主键更改为非集群主键的任务作为示例,我需要知道 pk 的实际名称才能删除它。
  2. 事物不需要有专有名称,如果它们可以很容易地唯一表示就足够了。这就是抽象的基础。面向对象编程就是这样。您不需要为不同类的相似属性 …

primary-key

19
推荐指数
3
解决办法
3139
查看次数

在标准版上监控 Oracle 数据库性能的工具

这是我要找的:

  • 适用于标准版,即无诊断包。
  • 提供当前和历史性能数据。
  • 良好的视觉效果,可轻松发现趋势并向管理层展示。

如果您使用过该工具,我会对您发现的利弊感兴趣。我可以列出一个列表,但实际使用该工具的洞察力更有价值。

performance oracle oracle-se

19
推荐指数
3
解决办法
4万
查看次数

高并发、高写入 DB 的基础架构

我的要求是:

  • 3000 个连接
  • 70-85% 写入与读取

目前,我们将高 CPU 超大实例的连接数最大化为 700。所有 8 个内核都已达到最大值。我们认为这是并发连接数,因为内存很好。写入本身非常简单(验证缓慢)。要扩展到 3000,我们需要转到多台服务器,当前选项:

  • MySQL 分片
  • MongoDB 集群
  • 卡桑德拉
  • Hadoop 和 MySQL(Hadoop 缓存,单个转储到 MySQL)
  • MongoDB & MySQL(我们使用 mongo 代替 Hadoop,用于缓存)

要处理这个数量的连接,有几个问题:

  1. MySQL Sharding 可以处理并发连接吗?
  2. 任何单个主节点都可以处理这些并发连接,还是像 Mongo 这样的多头节点是更好的选择?

如果我没有很好地描述我的问题,我深表歉意。请提问。

mysql replication mongodb cassandra

19
推荐指数
2
解决办法
5967
查看次数

在 MySQL Master/Slave 复制中,如果我写入 Slave 会发生什么?

几个问题

  • Slave 条目是否会一直保留,直到对 Master 上的表进行可能影响 Slave 的插入/更新/删除操作?

  • 如果没有,我如何确保从站与主站同步(通过删除从站条目或手动将该条目复制到主站)?

  • 最重要的是,如何检测表不同步?

mysql replication

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

建议使用 innodb_file_per_table 吗?

我们有一个应用程序,其中只有一个表将增长到数百万行,而其余的将略低于一百万行。那么我们应该使用 innodb_file_per_table 还是保留一个 .ibd 的建议是什么?我读过一些文章说不要使用它,因为在执行连接时您需要更多磁盘访问权限?为了报告生成目的,我们将在此表和其他表之间进行连接。

mysql innodb

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

mysqldump -all-databases 是否包括所有对象

是否mysqldump -all-databases包括所有对象?

我必须将所有数据库迁移到新服务器。

mysql mysqldump backup

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

无法打开表 mysql/innodb_index_stats

在全新安装 XAMPP 并从我的 linux live db 导入到 windows 开发阶段后,我开始遇到INSERT. 其他一切似乎都运行良好。

我得到的错误mysql_error.log是:

2013-08-15 12:44:49 16c0 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-08-15 12:44:49 16c0 InnoDB: Recalculation of persistent statistics requested for table "sizaradb"."pages" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.
2013-08-15 12:44:59 16c0 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-08-15 12:44:59 16c0 InnoDB: Recalculation of persistent statistics requested for table "sizaradb"."translations" but the required persistent statistics storage is …
Run Code Online (Sandbox Code Playgroud)

mysql innodb windows linux mysql-5.6

19
推荐指数
2
解决办法
8万
查看次数

mysqldump 错误 2013

我安装了一个数据库,我想在 mysql 中备份它。问题是mysqldump导出 'maia_mail' 表失败

# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
Run Code Online (Sandbox Code Playgroud)

它运行不到 30 秒并得到如上所示的错误。

DB 的总大小为 1.3GB,其中 maia_mail 表为 1.0GB

my.cnf我有这些设置:

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M
Run Code Online (Sandbox Code Playgroud)

请就如何转储数据库提出建议或提供一些指导?

mysql mysqldump backup

19
推荐指数
3
解决办法
5万
查看次数

我们可以在 MySQL 5.0 Replication 中做些什么来解决带宽问题?

我正在开发一个在客户端 PC (Win) 上运行的应用程序,它配置了一个 MySQL 服务器 5.1 实例,它将充当远程主站的只读从站。远程主服务器有几十个模式,但我每个客户端只需要一个,所以我在 my.ini 中提供了replication-do-db设置以仅复制客户端需要的模式。复制有效,但是当我们的客户进入只能通过 3G 无线网络访问互联网的地区时,他们会迅速超出数据计划限制并遇到昂贵的问题。

据我了解,MySQL 将所有模式的所有事务写入单个 binlog 文件,这意味着每个客户端必须下载在主服务器上的每个模式上执行的所有事务,然后在下载后,对每个复制应用数据库过滤器 -客户端的 my.ini 文件中的do-db设置。

为了最大限度地减少这种低效率,我采用了slave_compressed_protocol = 1设置,这似乎将传输的数据减少了 50%,但仍然导致我们的客户快速超过他们的数据限制,从而增加了 3G 账单。

我无法想象我是唯一面临这个问题的人,所以我相信我会通过设置 x = y 来获得关于如何实现这一目标的大量答案。但是,我找不到有关此类设置的任何文档,也找不到推荐的方法。

到目前为止,这是我对可能解决方案的想法,请提供反馈或替代路线:


  1. 为每个模式设置一个“代理”从属(在不同的机器上,或具有不同 MySQL 实例/端口的同一个机器上)
  2. 将代理从服务器配置为仅复制客户端希望复制的一个数据库。
  3. 将客户端的 MySQL 实例配置为相应代理从站的从站。

应该导致客户端仅提取其架构的二进制日志数据。缺点(据我所知)是它极大地增加了我们设置的复杂性,可能使其更加脆弱。

想法?这种方法甚至会奏效吗?

请注意,我们在 RedHat 上运行 MySQL 5.0 服务器,但如果它产生解决方案,我们可以升级到 5.5。

mysql replication mysql-5.5 mysql-5.1 mysql-5.0

18
推荐指数
1
解决办法
2560
查看次数