我有一个 InnoDB 客户表,按 KEY 分区,每个分区是一个美国州。我有电话号码索引,性能很棒。我们还需要在给定的美国州中按姓氏进行 SELECT。我应该在姓氏 AND 状态上创建索引,还是没有意义,因为表已经按状态分区了?
这是否会占用不必要的空间,因为 InnoDB 应该已经知道哪个分区是哪个状态,并且它只需要在该分区中找到与姓氏匹配的所有行?
我们没有做任何连接......这只是一个简单的查询,如下所示:
SELECT * FROM table WHERE lastname = "Smith" AND state="NY"
Run Code Online (Sandbox Code Playgroud) 假设 (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 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 5.0 的 RHEL5 安装,我们希望将其复制到运行 CentOS 6 和 MySQL 5.5 的新(虚拟化)服务器。然后,将来我们会将 RHEL5 机器撞到 CentOS6 和 MySQL5.5。如果可能,我们希望首先进行此复制。
所以简短的问题是,有没有人尝试将 MySQL 5.0 主服务器复制到 5.5 从服务器?
假设我有一个包含 2938347 行的 MyISAM 表(以及其他表)。此表仅用于日志记录,不会经常清空。
如果不定期归档或删除这些行,是否保留该表会影响服务器性能?
那么,MySQL 服务器上的表/数据库大小如何,但不经常访问。这些表与经常访问/查询的表共存,我想知道它们是否导致问题。
大流士
我有一个主从设置 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 5.1.4x (Windows) | 数据库
我最近从 mySQL 数据库(几十万行)中清除了数据,我打算使用
OPTIMIZE TABLE LOGTABLEFOO1,LOGTABLEFOO2,LOGTABLEFOO3;
Run Code Online (Sandbox Code Playgroud)
为了减少文件系统中的空白空间占用的数据空间。
我担心的是,一旦我开始执行此命令,我将不知道要花多长时间或在此过程中处于什么位置。无论如何我可以确定这些信息吗?据我所知,没有进度指示器。
我正在 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> 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) 我正在尝试为大型(120 GB)MySQL 数据库设置复制,但我搞砸了。
我关闭了 master,复制了数据文件,然后重新启动了 master。现在我已经设置了奴隶并启动了它,我意识到我忽略了获取MASTER_LOG_FILE和MASTER_LOG_POS设置复制所需值。
我仍然有一份未受影响的数据文件副本。有没有办法从这些文件中确定MASTER_LOG_FILE和MASTER_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 ×10
innodb ×4
mysql-5.5 ×3
replication ×3
deadlock ×1
errors ×1
index ×1
logs ×1
my.cnf ×1
myisam ×1
mysql-5.0 ×1
mysql-5.1 ×1
mysql-5.6 ×1
mysqlbinlog ×1
optimization ×1
partitioning ×1
performance ×1
permissions ×1
users ×1
wamp ×1
windows ×1