数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

7
如何优化大型数据库的mysqldump?
我有一个Symfony应用程序,其中有一个带有57个表的〜2GB InnoDB数据库。数据库的大部分大小都驻留在单个表中(约1.2GB)。我目前正在使用mysqldump每晚备份数据库。 由于使用comcast连接,通常,如果我手动运行转储,则在转储完成之前,我与服务器的连接会超时,导致不得不重新运行转储。[我目前运行一个每天晚上进行转储的cron,这仅用于我手动运行的转储。] 有没有一种方法可以加快转储以解决连接超时问题,还可以限制服务器占用此过程的时间? 顺便说一句,我目前正在努力减少整个数据库的大小,以解决此问题。


4
mysql innodb_buffer_pool_size应该多大?
我有一个仅包含InnoDB表的繁忙数据库,其大小约为5GB。该数据库在使用SSD磁盘的Debian服务器上运行,并且我已将max connections设置为800,这有时会饱和并使服务器停止运行。每秒平均查询量约为2.5K。因此,我需要优化内存使用量,以便为最大可能的连接空间。 我已经看到有关innodb_buffer_pool_size最多应占总内存的80%的建议。另一方面,我从Tuning-primer脚本收到此警告: Max Memory Ever Allocated : 91.97 G Configured Max Per-thread Buffers : 72.02 G Configured Max Global Buffers : 19.86 G Configured Max Memory Limit : 91.88 G Physical Memory : 94.58 G 这是我当前的innodb变量: | innodb_adaptive_flushing | ON | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | …
169 mysql  innodb 

19
开发人员应该能够查询生产数据库吗?
是否应授予开发人员查询(SELECT/只读)生产数据库的权限?我以前工作过的地方是开发团队db_datareader。我现在工作的地方,开发团队甚至无法连接到生产实例。 测试实例之一是每周一次从生产备份还原的生产副本,因此开发人员实际看到数据没有任何问题。 有什么好的理由不允许开发人员查询生产(除了不希望他们有权读取敏感数据外)?

4
帮助安装SQL Server 2017-VS Shell安装失败,退出代码为1638
关于如何处理此错误的任何建议: TITLE: Microsoft SQL Server 2017 Setup ------------------------------ The following error has occurred: VS Shell installation has failed with exit code 1638. For help, click: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=14.0.1000.169&EvtType=0x5B39C8B9%25401434%25403 ------------------------------ BUTTONS: OK ------------------------------ 这是一台正在运行的新笔记本电脑 SQL Server 2016 Express Visual Studio 2017 SSMS 2017 我尝试卸载与SQL Server或Visual Studio相关的所有内容。 日志:[3500:3970] [2017-11-03T16:25:20] e000:错误0x80070666:在安装较新版本时无法安装产品。 Detailed results: Feature: Full-Text …

5
授予用户对所有表的访问权限
我是Postgres的新手,正尝试迁移我们的MySQL数据库。在MySQL中我可以授予SELECT,UPDATE,INSERT,和DELETE在低特权用户的权限,使这些赞助适用于所有表中指定的数据库。我必须在Postgres中缺少一些东西,因为看起来我必须一次为每个表授予一次这些特权。拥有很多数据库,每个数据库有数百个表,这似乎是一项艰巨的任务,只是要起步。此外,一旦数据库开始运行,添加表的频率就足够频繁了,除非绝对必要,否则我不想每次都授予权限。 如何做到最好?


7
使用psql列出数据库特权
我正处于数据库服务器迁移的中间,无法确定(在此处进行搜索和搜索之后)如何使用psql命令行工具在PostgreSQL上列出数据库特权(或整个服务器上的所有特权)? 我在Ubuntu 11.04上,我的PostgreSQL版本是8.2.x。


5
可以使MySQL使用多个内核吗?
我看到了一些专用的MySQL服务器,它们从未使用过多个内核。我比MySQL的DBA开发人员更多,因此需要一些帮助 设定 这些服务器非常繁重,并带有OLAP / DataWarehouse(DW)类型的负载: 主:96GB RAM,8核心+单个RAID 10阵列 测试:具有4核的32GB RAM 最大的数据库为540 GB,总容量约为1.1TB,大部分为InnoDB表 Solaris 10 Intel-64 MySQL 5.5.x 注意:最大的数据库是从OLTP DR服务器复制的数据库,而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分钟) 问题 要使用多个内核需要什么设置或补丁? 也就是说,为什么MySQL不使用所有可用的内核?(与其他RDBMS一样) 是复制的结果吗? 其他注意事项 我了解RDBMS“线程”和OS“线程”之间的区别 我不是在问任何形式的并行性 InnoDB和线程的一些系统变量不是最优的(寻找快速的胜利) 短期而言,我无法更改磁盘布局 可以根据需要调整操作系统 最小的桌子上的单个ALTER TABLE需要4.5分钟(震惊IMO) 编辑1 两者的innodb_thread_concurrency都设置为8。是的,这是错误的,但不会使MySQL使用多个内核 innodb_buffer_pool_size在主数据库上为80GB,在测试中为10GB(另一个实例已关闭)。现在可以了。 innodb_file_per_table =开 编辑2 innodb_flush_log_at_trx_commit = …


8
为什么我们不应该允许NULL?
我记得读过一篇有关数据库设计的文章,并且我还记得它说您应该具有NOT NULL的字段属性。我不记得为什么会这样。 我似乎只能想到的是,作为应用程序开发人员,您无需测试NULL 和可能不存在的数据值(例如,字符串的空字符串)。 但是,对于日期,日期时间和时间,该怎么办(SQL Server 2008)?您必须使用一些历史性的或触底反弹的日期。 有什么想法吗?

12
是否应将二进制文件存储在数据库中?
在数据库中存储与数据相关的二进制文件的最佳位置是什么?你应该: 用blob存储在数据库中 使用数据库中的链接存储在文件系统上 存储在文件系统中,但重命名为内容的哈希并将哈希存储在数据库中 我没想到的事 (1)的优点(尤其是)保留了事务的原子性。代价是您可能会大大增加存储(以及相关的流/备份)要求 (3)的目标是在某种程度上保留原子性-如果您可以强制执行写入操作,则不允许更改或删除文件,并且始终具有正确的哈希作为文件名。想法是在允许插入/更新引用哈希之前将文件写入文件系统-如果此事务在文件系统写入之后但在数据库DML之前失败,则可以,因为文件系统正在“伪造”为所有存储库可能的文件和哈希-里面是否有没有指向的文件都没关系(如果小心,可以定期清理它们) 编辑: 看起来有些RDBMS以各自的方式涵盖了这一点-我很想知道其他人是如何做到的-特别是在针对postgres的解决方案中

13
如何找到PostgreSQL的数据目录?
我忘记了上次(几个月前)如何启动PostgreSQL,而且我不记得数据目录位于何处。该postgres命令似乎需要数据目录的位置。 如果有帮助,我就使用MacOsX。 /usr/local/postgres 在我的Mac上不存在。 使用下面提供的答案,我发现它在这里: /usr/local/var/postgres

4
为什么数字表“无价”?
我们的常驻数据库专家告诉我们,数字表非常宝贵。我不太明白为什么。这是一个数字表: USE Model GO CREATE TABLE Numbers ( Number INT NOT NULL, CONSTRAINT PK_Numbers PRIMARY KEY CLUSTERED (Number) WITH FILLFACTOR = 100 ) INSERT INTO Numbers SELECT (a.Number * 256) + b.Number AS Number FROM ( SELECT number FROM master..spt_values WHERE type = 'P' AND number <= 255 ) a …
112 sql-server 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.