Articles of innodb

在MySQL 5.1 InnoDB中,VARCHAR的最大长度是否会影响二级索引大小?

假设数据是相同的,那么VARCHAR的最大长度是否会影响辅助索引的空间使用率? InnoDB对索引使用固定长度logging吗? 假设我们正在谈论MySQL 5.1,并使用InnoDB COMPRESSED表格格式,并且所讨论的字段被定义为一个长度小于或等于255的VARCHAR(所以它只使用一个字节作为偏移量)。 这是用例: 我有一个非常大的表(几千兆字节)的服务器。 其中一个字段是VARCHAR(7)。 我们需要一点时间,我们正在考虑把它做成VARCHAR(255),但是我们担心它膨胀了索引。

为什么MySQL在不同的版本中对我的查询使用不同的索引?

我有一个大型的InnoDB表(大约800MB),我想计算行数。 我知道SELECT COUNT(*)在InnoDB中有问题,但是我所看到的解决scheme之一是创build一个二级索引 ,这比通过PRIMARY咀嚼的速度快得多,至less对于行数来说。 我已经将表内容复制到第二个服务器。 服务器的速度更快,当然复制产生了一个很好的,紧凑的表,没有遭受删除和更新。 所以在新的服务器上一切都很好,但是关于旧服务器的行为还是令我困惑: 我有一个PRIMARY索引,另一个索引(称为index2 )已经在表上定义。 在旧的服务器上(MySQL 5.0.27),我可以解释EXPLAIN SELECT COUNT(*) FROM myTable ,看到它将使用PRIMARY索引。 查询需要一分钟。 如果我SELECT COUNT(*) FROM myTable USE INDEX(index2) ,它需要SELECT COUNT(*) FROM myTable USE INDEX(index2) 。 如果我把WHERE someCol > lowest_possible_value它也select更快的指标。 在新的服务器(MySQL 5.1.52)上,同样的EXPLAIN语句告诉我它将使用index2 ,而没有任何提示。 一个简单的SELECT COUNT(*) FROM myTable非常快,大约20-30ms。 我可以运行SELECT COUNT(*) FROM myTable USE INDEX(PRIMARY) ,强制它使用“坏”索引,它需要更长的时间 – 只有3-4秒,但正如我所说的还有其他的差异来说明,这比“好”(非PRIMARY )指数还要慢上百倍。 为什么新的MySQL实例select“正确的”索引? 我可以在旧服务器上做些什么来重现这种行为? 我想避免一个完整的升级,但这不是没有问题的。

MySQL在正常情况下连接太多(Percona,InnoDB)

在正常情况下,我们得到了太多的连接错误,所以我假设这是一个configuration问题。 四个Web服务器, 不使用持续连接,部分原因是太多的连接错误太快。 在PHP / mySQL上查看更多关于PHP和持久连接的信息:如何debugging“太多的连接”错误? 这台机器在亚马逊上托pipe。 某些Web服务器与DB不在同一个AZ中。 1A-> 1D。 奇怪的是, max_connections的硬编码值是400,但在重启时将其设置为214。 我能够从MySQL客户端更改为400全球。但超越似乎过度。 从显示状态: | Connections | 38587 | | Max_used_connections | 31 | 该应用程序是PHP(fcgi / apache)。 我们的数据库大小约为54G。 机器有36Gig ram。 免费告诉我有13G免费,甚至包括用于caching/缓冲区的所有内存。 当我试图给32G的“innodb_buffer_pool_size”MySQL无法启动,因为mmap耗尽可分配内存。 缓冲池目前在22G。 mysqltuner的输出提到了缓冲池的大小,以及join_buffer_size – 这不在下面的configuration中。 这是Percona 5.5。 我还设置了http://jeremy.zawodny.com/blog/archives/011421.html max_connect_errors = 1844674407370954751 debuggingmysql太多连接问题 SHOW STATUS的输出中max_used_connections是21。 max_user_connections设置为0 …没有限制。 编辑:这可能与Linux系统上打开的文件/页面限制有关吗? configuration文件: # # The MySQL database server […]

无法停止Ubuntu Lucid上的MariaDB

在启动MariaDB 5.5时出现以下错误: InnoDB: Unable to lock /var/lib/mysql/ibdata1 在服务器重新启动运行MariaDB 5.1后,最初遇到这个错误。 已经进行了一些故障排除步骤,包括: 将MariaDB升级到5.5 移动和复制ib *文件 删除Apparmor(停止syn溢出错误) 我也收到其他错误,如: InnoDB: Could not open or create data files. InnoDB: If you tried to add new data files, and it failed here, InnoDB: you should now edit innodb_data_file_path in my.cnf back InnoDB: to what it was, and remove the new ibdata […]

即使整个数据库是MyISAM,InnoDB的数据大小也是如此?

我正在运行mysqltuner来调整我的数据库,我遇到了一个非常奇怪的事件。 即使整个数据库是MyISAM(所有表),它说: [!!] InnoDB data size / buffer pool: 403.1M/128.0M 数据库的默认存储引擎是InnoDB(即使所有的表都是MyISAM),所以我认为这可能会导致问题,但是当我将默认存储引擎值更改为MyISAM时,我仍然可以看到与InnoDB相关的完全相同的警告在mysqltuner中。 那么为什么会发生这种情况,我该如何解决? 当我不使用InnoDB开始时,我宁愿不浪费InnoDB缓冲池中的400M。 注意:我不想在这里做的是讨论MyISAM VS InnoDB这个古老的问题,我只需要弄清楚为什么InnoDB正在使用我的资源,即使我不使用它。

从ibdata / frm文件恢复mysql

一个硬盘故障已经离开了我试图从“数据”文件夹的副本恢复MySQL我有转储的“最”的内容,但我缺less一些数据文件夹有idbdata1 /日志文件/ .frm文件的文件夹所以,读了很多这和尝试了很多东西(见下文),但无法获得服务开始 – 是一个Windows用户与MySQL 5.5 1)使用innodb_force_recovery = 6启动所有原始日志文件的服务 RESULT: InnoDB: Error: log file .\ib_logfile0 is of different size 0 100663296 bytes InnoDB: than specified in the .cnf file 0 178257920 bytes! 2)用innodb_force_recovery = 6删除日志文件启动服务 RESULT: InnoDB: Page directory corruption: infimum not pointed to 131001 19:54:14 InnoDB: Page dump in ascii and hex (16384 bytes):len […]

在IIS7上设置MySQL innodb缓冲池大小

我使用的是VPS,Windows 2008 R2,IIS7,MYSQL 5.1.73,Hardward Config:Ram 2GB,Hardisk 40GB 在这个VPS上只有一个.NET应用程序正在运行。 应用程序目前仅由5个用户使用。 我发现MySQL服务器的INNODB BUFFER使用率是100% 我在my.cnf或my.ini文件中发现了一些build议,如更改缓冲区大小,但是我没有在VPS上find任何文件。 我也试过下面的命令 SET GLOBAL innodb_buffer_pool_size = 33554432 但它给了我一个错误 variables'innodb_buffer_pool_size'是一个只读variables 任何人都可以请build议我一个解决scheme。 谢谢

MySQL在服务启动时崩溃。 打一个错误? 数据库损坏?

我有一个在这个时候离线的Web服务器,因为MySQL无法启动一个exception。 我找不到问题的根本原因,但是我害怕数据库损坏MySQL服务。 这里是/var/log/mysql/mysqld.err输出: ==> /var/log/mysql/mysqld.err <== 2015-02-11 23:45:11 25171 [Warning] No argument was provided to –log-bin, and –log-bin-index was not used; so replication may break when this MySQL server acts as a master and has his hostname changed!! Please use '–log-bin=mysqld-bin' to avoid this problem. 2015-02-11 23:45:11 25171 [Note] InnoDB: Using atomics to ref count […]

mysql innodb崩溃断言

自从星期五以来,我的innodb数据库有一些非常大的麻烦。 每当我对大约22GB的特定表执行一些操作时,mysql服务器崩溃。 插入数据工作,其他表上的所有其他操作也正常工作。 根据'innochecksum'所有页面都可以。 我已经尝试使用force_innodb_recovery <= 4,但服务器过去了,当在第6199219行的表中转储表时,我得到一个丢失的连接错误。 即使在一些正常的查询中也会发生崩溃。 行号总是一样的。 以下是我的错误日志关于崩溃的内容: sr @ kirk:〜$ sudo mysqld –console –verbose 150215 19:20:15 [注]插件'FEDERATED'被禁用。 150215 19:20:15 InnoDB:InnoDB内存堆被禁用 150215 19:20:15 InnoDB:Mutexes和rw_locks使用GCCprimefacesbuiltins 150215 19:20:15 InnoDB:压缩表使用zlib 1.2.3.4 InnoDB:初始化缓冲池,大小= 20.0G 150215 19:20:18 InnoDB:完成缓冲池的初始化 150215 19:20:18 InnoDB:最高支持的文件格式是梭子鱼。 150215 19:20:22 InnoDB:等待后台线程启动 150215 19:20:23 InnoDB:5.5.41开始; 日志序号80382959696 150215 19:20:23 [注]服务器主机名(bind-address):'0.0.0.0'; 港口:3306 150215 19:20:23 [注] – '0.0.0.0'parsing为'0.0.0.0'; 150215 […]

InnoDB:mmap(68878336 bytes)失败; errno 12

截图解释了一切,首先我尝试启动它,而不会,所以我检查状态,然后检查日志。 在遵循了我在StackExchange周围创build的许多以前的build议之后,my.cnf的内容是: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd […]