小编Rol*_*DBA的帖子

我需要索引我分区的键吗?

我有一个 InnoDB 客户表,按 KEY 分区,每个分区是一个美国州。我有电话号码索引,性能很棒。我们还需要在给定的美国州中按姓氏进行 SELECT。我应该在姓氏 AND 状态上创建索引,还是没有意义,因为表已经按状态分区了?

这是否会占用不必要的空间,因为 InnoDB 应该已经知道哪个分区是哪个状态,并且它只需要在该分区中找到与姓氏匹配的所有行?

我们没有做任何连接......这只是一个简单的查询,如下所示:

SELECT * FROM table WHERE lastname = "Smith" AND state="NY"
Run Code Online (Sandbox Code Playgroud)

mysql innodb index partitioning mysql-5.5

6
推荐指数
1
解决办法
3271
查看次数

面对有点乱序的插入,innodb 的碎片有多严重?

假设 (field1, field2) 上有一个复合主键

另外,让 X 是一组理论的 n 个数字

插入看起来像这样:

INSERT INTO table(field1, field2)
VALUES([a number picked at random from X], [an incrementing number]);
Run Code Online (Sandbox Code Playgroud)

每插入 m 个数字,从 X 中随机删除一个数字,并随机添加另一个数字。

假设 n=1000 和 m=500。换句话说,每插入 500 次,集合 X 中的一个元素就会改变,但集合 X 总是有 1000 个元素。

B+树会变得多么支离破碎?

mysql innodb

6
推荐指数
1
解决办法
1661
查看次数

MySQL 5.6.8 中的 my-*.cnf 发生了什么?

在 MySQL 5.6.7 之前,官方 RPM附带这些文件:

/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
Run Code Online (Sandbox Code Playgroud)

在5.6.8中,这些文件都没有了,只剩下一个:

/usr/share/mysql/my-default.cnf
Run Code Online (Sandbox Code Playgroud)

我不是 MySQL 调优专家,过去总是以my-innodb-heavy-4G.cnf. 现在我只剩下一个配置选项:

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
Run Code Online (Sandbox Code Playgroud)

调整这个变量是大多数优化的关键,还是在安装新服务器时我应该调整其他相关参数?

在这种情况下,我在哪里可以找到等效的文件,该文件将包含仅 InnoDB 的 4GB RAM 专用 MySQL 服务器的合理默认值?

mysql my.cnf

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

将 MySQL 5.0 Master 复制到 5.5 Slave?

我们正在计划一系列服务器/软件升级并且很好奇。

我们有一个运行 MySQL 5.0 的 RHEL5 安装,我们希望将其复制到运行 CentOS 6 和 MySQL 5.5 的新(虚拟化)服务器。然后,将来我们会将 RHEL5 机器撞到 CentOS6 和 MySQL5.5。如果可能,我们希望首先进行此复制。

所以简短的问题是,有没有人尝试将 MySQL 5.0 主服务器复制到 5.5 从服务器?

mysql replication mysql-5.5 mysql-5.0

6
推荐指数
1
解决办法
3351
查看次数

表大小对性能的影响有多大?

假设我有一个包含 2938347 行的 MyISAM 表(以及其他表)。此表仅用于日志记录,不会经常清空。

如果不定期归档或删除这些行,是否保留该表会影响服务器性能?

那么,MySQL 服务器上的表/数据库大小如何,但不经常访问。这些表与经常访问/查询的表共存,我想知道它们是否导致问题。

大流士

mysql myisam performance optimization

6
推荐指数
1
解决办法
3227
查看次数

MySQL Slave Relay Logging 但不记录二进制日志

我有一个主从设置 mysql 5.5,设置很好,除了从站不会二进制日志到标准 mysql-binlog 只到中继日志。我担心这可能是因为我对此事缺乏了解,但我的最终目标是设置另一个以当前奴隶为食的奴隶,然后将两者指向一个主主关系。

我的问题是,虽然我可以在从站上插入一条记录并且主复制位置(在从站上)会改变,但它不会因同一数据库上的从站活动而改变。从站不会将活动转储到两个日志中吗?如果我将辅助从站指向中继日志,那么我的选项是什么?

希望这是有道理的。

我在从站上的 my.ini 设置是这样的,还设置了唯一的服务器 ID 和主机名:

binlog-do-db=our_database  
binlog-ignore-db=mysql  
binlog-ignore-db=test  
replicate-do-db=our_database  
Run Code Online (Sandbox Code Playgroud)

mysql replication logs mysql-5.5 wamp

6
推荐指数
1
解决办法
6513
查看次数

OPTIMIZE TABLE 进度是否有进度指示器?

MySQL 5.1.4x (Windows) | 数据库

我最近从 mySQL 数据库(几十万行)中清除了数据,我打算使用

OPTIMIZE TABLE LOGTABLEFOO1,LOGTABLEFOO2,LOGTABLEFOO3;
Run Code Online (Sandbox Code Playgroud)

为了减少文件系统中的空白空间占用的数据空间。

我担心的是,一旦我开始执行此命令,我将不知道要花多长时间或在此过程中处于什么位置。无论如何我可以确定这些信息吗?据我所知,没有进度指示器。

mysql innodb windows mysql-5.1

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

如何防止应用程序中发生死锁?

我正在 PHP 框架(Codeigniter 2.1.0)中开发 LMS 应用程序。我正在使用 MySQL 数据库。数据库中的所有表都有innodb引擎。我还在每个表上创建了索引。现在我正在本地使用 Jmeter 2.9 版同时对 200 个用户进行负载测试。在负载测试期间,在特定页面操作中,我遇到了Deadlock Found错误。我将原始查询更改为新查询,但再次发生相同的错误。

我已经编写了 save_interactions 函数,它需要四个参数交互数组、module_id、course_id、user_id & 被 AJAX 脚本调用了很多次。如果特定的interaction_id 不存在于该表中,则以下脚本将插入记录,否则更新查询将被触发。

public function save_interactions($interaction_array,$modid,$cid,$uid)
{
    foreach($interaction_array as $key=>$interact_value)
    {
        $select_query = $this->db->query("SELECT COUNT(*) AS total FROM `scorm_interactions` WHERE `mod_id`='".$modid."' AND `course_id`='".$cid."' AND `user_id`='".$uid."' AND `interaction_id`='".$interact_value[0]."'");
        $fetchRow = $select_query->row_array();

        if($fetchRow['total']==1)
        {
            $update_data = array(
                        "interaction_type"=>$interact_value[1],
                        "time"=>$interact_value[2],
                        "weighting"=>$interact_value[3],
                        "correct_response"=>$interact_value[4],
                        "learner_response"=>$interact_value[5],
                        "result"=>$interact_value[6],
                        "latency"=>$interact_value[7],
                        "objectives"=>$interact_value[8],
                        "description"=>$interact_value[9]
            );
            $this->db->where('mod_id', $modid);
            $this->db->where('course_id', $cid);
            $this->db->where('user_id', $uid);
            $this->db->where('interaction_id', $interact_value[0]);
            $this->db->update('scorm_interactions', $update_data);
        }else
        {
            $insert_data = …
Run Code Online (Sandbox Code Playgroud)

mysql innodb deadlock

6
推荐指数
1
解决办法
9015
查看次数

错误 1054 (42S22): 'mysql.user' 中的未知列 'plugin'

我正在尝试为用户授予对新数据库的权限

mysql> grant all on db_test.* to 'user_test'@'localhost' identified by 'usersexistingpassword';
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'
Run Code Online (Sandbox Code Playgroud)

我正在使用 MySQL 5.6

mysql> select @@version;
+-------------+
| @@version   |
+-------------+
| 5.6.24-72.2 |
+-------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

我确实在 MySQL 上找到了一篇关于在 5.6.x 及更高版本上更新本机密码的文章

6.3.9.3 从 4.1 之前的密码哈希和 mysql_old_password 插件迁移 https://dev.mysql.com/doc/refman/5.7/en/account-upgrades.html

我以 root 身份运行了他们推荐的命令

mysql> UPDATE mysql.user SET plugin = 'mysql_native_password'
    -> WHERE plugin = '' AND (Password = '' OR LENGTH(Password) = 41);
ERROR 1054 (42S22): Unknown …
Run Code Online (Sandbox Code Playgroud)

mysql permissions users errors mysql-5.6

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

如何从二进制文件中获取 MySQL 二进制日志坐标?

我正在尝试为大型(120 GB)MySQL 数据库设置复制,但我搞砸了。

我关闭了 master,复制了数据文件,然后重新启动了 master。现在我已经设置了奴隶并启动了它,我意识到我忽略了获取MASTER_LOG_FILEMASTER_LOG_POS设置复制所需值。

我仍然有一份未受影响的数据文件副本。有没有办法从这些文件中确定MASTER_LOG_FILEMASTER_LOG_POS

相关问题:

  • 如果你设置了会发生什么 MASTER_LOG_POS为较早的时间点?
  • 假设将执行重复查询,可能导致重复数据,我是否正确?

编辑

我一直在调查该mysqlbinlog命令,并通过执行以下命令发现了正确的信息:

mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
    mysql-bin.000006 | grep end_log_pos
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

... a whole bunch more lines ...

#150621 20:10:21 server id 1  end_log_pos 720159843     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720161877     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:21 server id 1  end_log_pos 720162762     Query   thread_id=901489    exec_time=0 error_code=0
#150621 20:10:22 server id 1  end_log_pos 720164796 …
Run Code Online (Sandbox Code Playgroud)

mysql replication mysqlbinlog

6
推荐指数
1
解决办法
9151
查看次数