AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-630

gbn's questions

Martin Hope
gbn
Asked: 2011-12-24 02:09:53 +0800 CST

在 MySQL 中查看元数据刷新

  • 2

与其他 RDBMS 一样,视图元数据在视图创建时存储。

来自CREATE VIEWMySQL文档

视图定义在创建时被“冻结”,因此之后对基础表的更改 [原文如此] 不会影响视图定义。

与其他 RDBMS 不同,我看不到干净地刷新此视图元数据的方法:

  • SQL 服务器:EXEC sp_refreshview 'MyView'
  • 甲骨文:ALTER VIEW MyView COMPILE

这里的系统似乎是使用 DROP/CREATE “手动执行此操作”,这不是我的风格。执行此手动过程的通常人群正在休假,所以这周由我负责。

我也没有要提名的奴才:所以请提供任何解决方案...

mysql view
  • 1 个回答
  • 2169 Views
Martin Hope
gbn
Asked: 2011-11-12 02:16:04 +0800 CST

MySQL聚合异常

  • 5

我正在检查某些列对索引的选择性。
这种“忽略我给你的”行为记录在哪里?

这给出了 4,851,908、4,841,060 和 1,000,052

SELECT
     COUNT(*), 
     COUNT(DISTINCT Col1), COUNT(DISTINCT Col2)
FROM Sometable;

根据 MySQL 扩展,这给出了 4,843,634 个唯一对

SELECT COUNT(DISTINCT Col1, Col2) FROM Sometable

以下是错误的:无论任何填充列或表达式顺序如何,单个 COUNT(DISTINCT colx) 都给出 4,843,634 个唯一对计数。

我预计COUNT(DISTINCT Col1) = 4,841,060,和COUNT(DISTINCT Col1) = 1,000,052。

SELECT COUNT(DISTINCT Col1), COUNT(DISTINCT Col2) FROM Sometable

SELECT COUNT(DISTINCT Col2), COUNT(DISTINCT Col1) FROM Sometable

SELECT COUNT(DISTINCT Col1), 1 AS Filler, COUNT(DISTINCT Col2) FROM Sometable

但这又用另一个聚合给出了正确的值(就像COUNT(*)上面一样)

SELECT COUNT(DISTINCT Col1), MAX(col1) AS Filler, COUNT(DISTINCT Col2) FROM Sometable

问题,如果不清楚:

  • 为什么COUNT(DISTINCT Col1), COUNT(DISTINCT Col2)表现得像COUNT(DISTINCT Col1, Col2)
  • 为什么需要另一个聚合才能使其工作?
mysql aggregate
  • 2 个回答
  • 295 Views
Martin Hope
gbn
Asked: 2011-09-15 05:02:47 +0800 CST

SQL Server 中存在的 MySQL 中的等效函数

  • 4

在 EXIT HANDLER 块中,MySQL 的等价物是什么

  • OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)
  • ERROR_MESSAGE()

编辑

我想做的事。在 SQL Server 中我有

CREATE PROC ...
AS
SET NOCOUNT, XACT_ABORT ON;

BEGIN TRY
 ...
END TRY
BEGIN CATCH
   ROLLBACK etc
   EXEC someGenericProc @@PROCID, @errmsg OUTPUT;
   RAISERROR ( @errmsg, 16, 1);
END CATCH
GO

CREATE PROC someGenericProc
   @LoggingProcID int
AS
..
SELECT
    @LoggingObject = OBJECT_SCHEMA_NAME(@LoggingProcID ) + '.' + OBJECT_NAME(@LoggingProcID),
    @ErrorObject = ERROR_PROCEDURE(),
    @ErrorMessage = ERROR_MESSAGE();

-- some processing to deal with nesting etc

INSERT SomeErrorTable (...)
VALUES (@LoggingObject, @ErrorObject, @ErrorMessage)
...
GO

干杯

mysql error-handling
  • 1 个回答
  • 18385 Views
Martin Hope
gbn
Asked: 2011-09-13 06:59:54 +0800 CST

可以让 MySQL 使用多个内核吗?

  • 142

我收到了一些专用的 MySQL 服务器,它们从不使用超过一个内核。我比 MySQL 的 DBA 更像开发人员,所以需要一些帮助

设置

这些服务器在 OLAP/DataWarehouse (DW) 类型的负载下非常庞大:

  • 主要:96GB RAM,8 核 + 单个 RAID 10 阵列
  • 测试:4 核 32GB RAM
  • 最大的 DB 为 540 GB,总量约为 1.1TB,主要是 InnoDB 表
  • Solaris 10 Intel-64
  • MySQL 5.5.x

注意:最大的 DB 是从 OLTP DR 服务器复制的 DB,DW 是从这里加载的。它不是一个完整的 DW:仅持续 6 个月到 6 周,因此它比 OLTP DB 小。

测试服务器上的观察

  • 3个独立的连接
  • 每个都有一个并发的(和不同的)ALTER TABLE...DROP KEY...ADD INDEX
  • 这 3 个表有 2.5、3.8 和 450 万行
  • CPU 使用率高达 25%(一个核心被最大化)并且没有更高
  • 3 个 ALTER 需要 12-25 分钟(最小的单个需要 4.5)

问题

  1. 需要什么设置或补丁才能允许使用多个内核?
    也就是说,为什么 MySQL 不使用所有可用的内核?(与其他 RDBMS 一样)
  2. 这是复制的结果吗?

其他注意事项

  • 我了解 RDBMS“线程”和操作系统“线程”之间的区别
  • 我不是在问任何形式的并行性
  • InnoDB 和线程的一些系统变量不是最佳的
    (寻求快速获胜)
  • 短期内,我无法更改磁盘布局
  • 如果需要,可以调整操作系统
  • 最小表上的单个 ALTER TABLE 需要 4.5 分钟(令人震惊的 IMO)

编辑 1

  • innodb_thread_concurrency 在两者上都设置为 8。是的,这是错误的,但不会让 MySQL 使用多核
  • innodb_buffer_pool_size 在主数据库上是 80GB,在测试上是 10GB(另一个实例已关闭)。现在可以了。
  • innodb_file_per_table = ON

编辑 2

  • innodb_flush_log_at_trx_commit = 2
  • innodb_use_sys_malloc = ON
  • innodb_flush_method 应该是 O_DIRECT (但是 SHOW VARIABLES 没有显示这个)
  • innodb_doublewrite = 关闭
  • 文件系统 = ZFS(我的系统管理员发现了这个:http: //blogs.oracle.com/realneel/entry/mysql_innodb_zfs_best_practices)

去测试

  • innodb_flush_method 不应该显示为 O_DIRECT
  • 将遵循 RolandoMySQLDBA 的设置

如果我错过了任何重要的事情,请告诉我

干杯

更新

在 RolandoMySQLDBA 的答案中更改了 innodb_flush_method + 3 x 线程设置
结果:> 1 个核心用于测试 = 阳性结果

mysql performance
  • 5 个回答
  • 237464 Views
Martin Hope
gbn
Asked: 2011-02-21 09:33:37 +0800 CST

SQL Server:仅用于系统表的文件组?

  • 12

我们的公司标准之一是为用户表/索引提供单独的文件组/文件。这被设置为默认值,因此无需限定 CREATE TABLE 语句。

所以看起来像这样

  • fileid 1 = 系统表,MDF
  • fileid 2 = t-log = LDF
  • fileid 3 = 用户资料 = NDF

这里的任何人都可以帮助我理解为什么要强制执行的原始理由吗?


我会坦白说我认为这是伏都教。难道我错了……?

编辑:我知道如何使用文件组来分离索引/分区/档案,以及如何恢复零碎。这个问题是关于在同一卷上仅对系统表使用单独的文件组。

sql-server filegroups
  • 3 个回答
  • 1540 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve