表示 进入内容 140011401015677
« 先前的 10 新的记录 | 下一步 10 较早的记录 »
【IT技术】阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路

专访阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路

原文作者:pipihappy8888 http://www.itpub.net/thread-1887486-1-1.html 如果说淘宝革了零售的命,那么DT革了企业IT消费的命。

【大数据】  【架构】  【NOSQL】  【mysql】  【RDS】  【SQL】  【高可用】   …

[获取更多]
[MySQL优化案例]系列 — 索引、提交频率对InnoDB表写入速度的影响

本次,我们来看看索引、提交频率对InnoDB表写入速度的影响,了解有哪些需要注意的。

先直接说几个结论吧:

1、关于索引对写入速度的影响:
a、如果有自增列做主键,相对完全没索引的情况,写入速度约提升 3.11%;
b、如果有自增列做主键,并且二级索引,相对完全没索引的情况,写入速度约降低 27.37%;

因此,InnoDB表最好总是有一个自增列做主键。

2、关于提交频率对写入速度的影响(以表中只有自增列做主键的场景,一次写入数据30万行数据为例):

a、等待全部数据写入完成后,最后再执行commit提交的效率最高;
b、每10万行提交一次,相对一次性提交,约慢了1.17%;
c、每1万行提交一次,相对一次性提交,约慢了3.01%;
d、每1千行提交一次,相对一次性提交,约慢了23.38%; …
[获取更多]
[MySQL SQL优化系列]之in与range查询

首先我们来说下in()这种方式的查询。在《高性能MySQL》里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的。使用in这种方式其实MySQL优化器是转化成了n*m种组合方式来进行查询,最终将返回值合并,有点类似union但是更高效。同时它存在这一些问题:

老版本的MySQL在IN()组合条件过多的时候会发生很多问题。查询优化可能需要花很多时间,并消耗大量内存。新版本MySQL在组合数超过一定的数量就不进行计划评估了,这可能导致MySQL不能很好的利用索引。

这里的“一定数量”在MySQL5.6.5以及以后的版本中是由eq_range_index_dive_limit这个参数控制(感谢 …

[获取更多]
[MySQL SQL优化系列]之in与range查询

首先我们来说下in()这种方式的查询。在《高性能MySQL》里面提及用in这种方式可以有效的替代一定的range查询,提升查询效率,因为在一条索引里面,range字段后面的部分是不生效的。使用in这种方式其实MySQL优化器是转化成了n*m种组合方式来进行查询,最终将返回值合并,有点类似union但是更高效。同时它存在这一些问题:

老版本的MySQL在IN()组合条件过多的时候会发生很多问题。查询优化可能需要花很多时间,并消耗大量内存。新版本MySQL在组合数超过一定的数量就不进行计划评估了,这可能导致MySQL不能很好的利用索引。

这里的“一定数量”在MySQL5.6.5以及以后的版本中是由eq_range_index_dive_limit这个参数控制(感谢 …

[获取更多]
pickup.lichun对《MySQL事务和MVCC简介-update流程》的评论

数据库都是日志先行的啊,不写日志,数据库崩溃了,数据怎么恢复?
这个步骤其实是参考《MySQL数据库InnoDB存储引擎Log漫游》 三篇系列文章:http://www.mysqlops.com/2012/04/06/innodb-log1.html

CentOS下如何完全卸载MySQL?解决卸载不干净的问题

CentOS下如何完全卸载MySQL?解决卸载不干净的问题 系统:CentOS 6.5,MySQL:MySql 5.6 这里主要解决使用rpm安装的卸载问题,安装方法见:CentOS安装mysql*.rpm提示conflicts with file from package的解决办法 虽然说这里的是使用rpm安装的卸载问题,我觉得使用yum方式安装的如果遇到相同的问题也一样适用。

【mysql】  【innodb】  【LOG】  【centos】  【rpm】  【Server】   …

[获取更多]
MySQL数据目录建立的过程

编译MySQL的过程中可看到类似如下的信息,这是在初始化一个数据目录,可观察参数,掌握MySQL编译过程中建立数据目录的过程:
Step 1:
Executing .../mysqld.exe --no-defaults --console --bootstrap --lc-messages-dir=.../sql/share --basedir=. --datadir=. --default-storage-engine=MyISAM --default-tmp-storage-engine=MyISAM --loose-skip-ndbcluster --max_allowed_packet=8M --net_buffer_length=16K --loose-skip-auto_generate_certs --loose-skip-sha256_password_auto_generate_rsa_keys
Step 2:
input file bootstrap.sql, current directory .../sql/data

解析:
1 首先,调用了编译好的mysqld
2 其次, 使用了参数"--bootstrap",表示要生成初始的数据目录.官方对这个参数的解释为:
   Used by mysql installation scripts
3 设定数据目录的位置. 如调用参数"--basedir=. --datadir=."
4 …

[获取更多]
[MySQL案例]之恢复进程莫名被杀

今天上班就发现一起数据库例行恢复作业失败,失败提示为:“数据库恢复失败”,也就是说是在执行mysql < dumpfile的时候失败了。

12
      [ root@localhost ]#/usr/local/mysql56/bin/mysql -S ./mysql.sock bi_monitor < /home/mysql/backup/2014-09-21_bi_monitor_3346.sql ERROR 2006 (HY000) at line 294: MySQL server has gone away

MySQL server has gone away是指客户端与MySQL服务端之间的连接段开,一般来说原因有这么几个:

  1. MySQL crash:MySQL Server宕机
  2. connection timeout:客户端连接超时
  3. kill connection:连接进程被杀,与connection timeout差不多,区别在于一个是MySQL Server主动,一个是被动
  4. max_allowed_packet too small:返回结果集大于max_allowed_packet限制
[获取更多]
[MySQL案例]之恢复进程莫名被杀

今天上班就发现一起数据库例行恢复作业失败,失败提示为:“数据库恢复失败”,也就是说是在执行mysql < dumpfile的时候失败了。

12
      [ root@localhost ]#/usr/local/mysql56/bin/mysql -S ./mysql.sock bi_monitor < /home/mysql/backup/2014-09-21_bi_monitor_3346.sql ERROR 2006 (HY000) at line 294: MySQL server has gone away

MySQL server has gone away是指客户端与MySQL服务端之间的连接段开,一般来说原因有这么几个:

  1. MySQL crash:MySQL Server宕机
  2. connection timeout:客户端连接超时
  3. kill connection:连接进程被杀,与connection timeout差不多,区别在于一个是MySQL Server主动,一个是被动
  4. max_allowed_packet too small:返回结果集大于max_allowed_packet限制
[获取更多]
[MySQL案例]之一把看不见的锁

昨晚半夜处理了一个故障,只是简单SQL执行缺少索引导致CPU飙高,加一条索引就搞定。原来以为事情到此为止,让另外一个同事收尾准备睡觉了,这个时候高潮出现了。刚才处理的是一台slave server,为了保证实例数据对象一致性,让同事先删掉,然后在master server再加这条索引,最后发现add index的操作在slave server一直在等metadata lock释放了,并且在processlist里面居然找不到任何引起表锁的请求。就这样折腾了到凌晨,后面索性就丢在自己等锁释放,差不多过了6分钟创建成功,load再次下降。

分析

事后在5.5的手册中找到了解释:

To ensure transaction serializability, the server must not permit one session to perform a data definition language (DDL) statement on a table that is used in an uncompleted transaction in another session. The server achieves this by acquiring …

[获取更多]
表示 进入内容 140011401015677
« 先前的 10 新的记录 | 下一步 10 较早的记录 »