楼主: mchdba

MySQL知识点技能点总结贴--个人版!

[复制链接]
论坛徽章:
0
141#
发表于 2012-6-17 06:21 | 只看该作者
版本多少?

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
142#
 楼主| 发表于 2012-6-20 15:32 | 只看该作者
今天又同事问了我mysql的绑定变量问题=:color为什么报错,用不了,google了下,找到如下文章,share给大家
mysql API中的参数绑定问题    用惯了ORACLE,用MYSQL还真不习惯。
一般来说,执行语句前,数据库引擎需要将语句翻译成执行计划,这就是典型的SQL解析过程。而且执行后的SQL会被放在缓冲区中,下次再执行同样的语句能提高性能。
对于ORACLE来说,不同的SQL太多会导致共享池耗满,产生问题。因此,使用ORACLE数据库的时候,不能将变量格式化成字符串组合成SQL,这样不但影响性能,还会影响数据库的稳定性。一般会在SQL语句中使用:name这样的格式来预留下参数的位置,执行的时候将变量绑定上去。参数绑定的方法能大大提高性能。

而MYSQL中呢?
最初使用mysql++的时候,看到Query对象中可以在SQL语句中使用%0, %1,%2这样的占位符来预留参数,然后使用parse()方法解析语句,然后在执行的时候加上变量。难道,原理和ORACLE一样,可以提高性能?

看了Mysql++的实现后,大失所望:mysql++只是方便了使用者而已,采用逐个字符解析的办法从SQL语句中提取出%0,%1等占位符,然后根据实际传入的变量组合成SQL语句,并没有提高性能…………

答案还必须到mysql的API中去寻找:终于在mysql文档的25.2.7.10节看到一个例子:使用MYSQL_STMT。文档中的例子代码就不在此处贴出来了,需要的朋友可以去这里查看:http://dev.mysql.com/doc/refman/ ... #mysql-stmt-execute

总结下来就是:
1、MYSQL_STMT这个功能可以具备ORACLE一样的绑定变量功能;
2、照文档上说,使用MYSQL_STMT是可以提高性能的;(下一步将对比性能的差异究竟是多大)
3、占位符是问号,例如:insert into tab(a,b,c)values(?,?,?)

希望,MYSQL_STMT可以提高性能。

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
143#
 楼主| 发表于 2012-6-24 23:56 | 只看该作者
Maatkit check主从数据以及restore小例子


-- 修复单个表
1 run
mk-table-sync --execute --sync-to-master h=10.100.200.28,u=check,p=checksum,P=3306,D=openshop,t=order_timer_info

2 check 验证
mk-table-checksum h=10.100.200.22,u=check,p=checksum,P=3306 h=10.100.200.28,u=check,p=checksum,P=3306 -d openshop -t order_timer_info  --count

使用道具 举报

回复
论坛徽章:
0
144#
发表于 2012-7-2 08:39 | 只看该作者
很专业啊
          如果你想更多的了解数据库  

  欢迎登陆www.yingxiaoshipeixun.com

                              相信一定能让你学到更多更有用的知识的
                  

使用道具 举报

回复
论坛徽章:
0
145#
发表于 2012-7-2 08:42 | 只看该作者
的缴费时间公平www.yingxiaoshipeixun.com

使用道具 举报

回复
论坛徽章:
0
146#
发表于 2012-7-2 15:02 | 只看该作者
楼主真是牛人呀,学习中!

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
147#
 楼主| 发表于 2012-7-4 16:40 | 只看该作者
-- 收缩innodb存储引擎表的空间大小:

delete 了6000W日志表记录,但是表占据的文件大小一直没有变化。

后来,qq群友小白教我一招:
alter table xxxx engine=innodb;
搞定,而且速度很很快。

mysql> alter table order_action engine=innodb;
Query OK, 0 rows affected (0.62 sec)
Records: 0  Duplicates: 0  Warnings: 0

表里面有2000W记录,占据14G的ibd文件,只用不到一秒就搞定了。oh,my god!

使用道具 举报

回复
论坛徽章:
0
148#
发表于 2012-7-11 15:34 | 只看该作者
我靠,满哥,这都是你写的呀,没发现,慢慢学习呀

使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
149#
 楼主| 发表于 2012-7-11 21:10 | 只看该作者
有网友问我:
jdbcUrl=jdbc\:mysql\://localhost\:3306/cloud_db_09?autoReconnect
这个配置文件的localhost本来是ip
现在没有固定ip 那该怎么配置  直接写域名吗?

他将localhost改成了www.ggcc.com变成了如下配置:
jdbcUrl=jdbc\:mysql\://www.ggcc.com\:3306/cloud_db_09?autoReconnect
结果报错如下:
Connections could not be acquired from the underlying database!



我叫他localhost\:3306改成了www.ggcc.com改成如下:
jdbcUrl=jdbc\:mysql\://www.ggcc.com/cloud_db_09?autoReconnect

然后部署应用,启动,搞定了,OK!


使用道具 举报

回复
论坛徽章:
27
优秀写手
日期:2013-12-18 09:29:09ITPUB季度 技术新星
日期:2012-08-15 14:50:13嫦娥
日期:2013-03-04 09:47:05数据库板块每日发贴之星
日期:2011-09-08 01:01:01数据库板块每日发贴之星
日期:2011-09-11 01:01:01数据库板块每日发贴之星
日期:2011-09-10 01:01:02数据库板块每日发贴之星
日期:2011-09-09 01:01:01ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422013年新春福章
日期:2013-03-04 09:50:49
150#
 楼主| 发表于 2012-7-11 21:11 | 只看该作者
有网友问我:
jdbcUrl=jdbc\:mysql\://localhost\:3306/cloud_db_09?autoReconnect
这个配置文件的localhost本来是ip
现在没有固定ip 那该怎么配置  直接写域名吗?

他将localhost改成了www.ggcc.com变成了如下配置:
jdbcUrl=jdbc\:mysql\://www.ggcc.com\:3306/cloud_db_09?autoReconnect
结果报错如下:
Connections could not be acquired from the underlying database!



我叫他localhost\:3306改成了www.ggcc.com改成如下:
jdbcUrl=jdbc\:mysql\://www.ggcc.com/cloud_db_09?autoReconnect

然后部署应用,启动,搞定了,OK!


使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表