- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL基础技能与原理——高级应用 MySQL DBA Team 彭立勋() 内容概要 6. MySQL数据库同步方案 7. MySQL与应用程序的优化 8. MySQL管理基础 9. 网站常见错误分析 10. MySQL故障案例 MySQL数据库同步方案 Trigger同步方案(Otter) Log同步方案(Erosa) 自带Replication同步方案 Trigger同步方案 Otter采用Trigger方式进行同步。基本原理是为每张要同步的表加上一个触发器,表上增删改都会触发Trigger把主键记录到一张同步表,同步程序读取同步表的主键和修改类型,到目标表去执行相同的操作,保证最终一致。 优点:安全可靠,不会因为日志格式变化或数据库本身的机制变动带来同步程序的大改动。 缺点:对数据库入侵大,需要为每张表建立Trigger,并且在数据库建立存储过程,执行存储过程和触发器会带来一定的数据库压力。 Log同步方案 Erosa采用解析日志的方式进行同步。通过解析Oracle的RedoLog或MySQL的BinLog,获取在数据库上执行的SQL及其顺序,分发到目标数据库去执行一遍,以获得最终一致。 优点:对数据库入侵小,可以将日志拷贝到异地分析,对数据库本身不会增加压力。 缺点:对日志格式依赖大,日志格式发生变动则同步程序需要进行较大改动。 Replication同步方案 MySQL自带Replication复制方案,Oracle也有基于块复制的Stanf by方案。MySQL通过将执行的增删改SQL记录到日志,传输到备机再执行一遍保证最终一致性。可以设置日志格式为ROW(按行记录),Statement(按SQL记录),MIXED(混合式,让MySQL决定每次记录用哪个格式),DDL全部通过Statement方式记录。 优点:MySQL自带,无需第三方工具,部署方便,MySQL自带丰富的参数可以实现各种复制方案,包括双Master,级联Slave等。 缺点:无法实现多源复制,复制位置丢失很难恢复复制。 MySQL与应用程序的优化 预处理与绑定变量 连接池设置及影响 应用程序实现JOIN 预处理与绑定变量 PREPARE语句:SET@sql1=‘xxx’; PREPARE stmt1 FROM @sql1; 变量用问号代替(绑定变量)。 作用:将SQL预先解析,在一个Session内再次使用此语句时不再重新解析。 EXECUTE语句:EXECUTE stmt1 USING @val1,@val2; 作用:将绑定变量赋予具体的值并且执行。 DEALLOCATE语句: DEALLOCATE PREPARE stmt1; 作用:销毁一个预解析SQL,释放资源。 为何使用绑定绑定变量? 因为绑定变量比直接传值更安全,尤其是拼接SQL非常容易被注入攻击。同时绑定变量也可以提高一点效率。 为何使用预处理,尤其在存储过程? 因为预处理可以避免SQL的反复解析,尤其是执行速度快的小SQL,解析时间甚至可能超过执行时间,采用预处理可以显著提高性能。 连接池设置及影响 MySQL如何处理连接? 每次客户端向数据库服务器请求一个连接,服务器根据用户名密码在已有连接内查找一个相同配置的连接,分配给请求。如果找不到,则数据库分配一个新连接给当前请求。 分配新连接做哪些工作? MySQL新开一个连接,就会创建一个新的mysql结构体,其中包括Join_buffer、Sort_buffer和一个Session变量存储数组。 如果连接数过多会怎么样? 如果连接MySQL的线程太多,那么每个线程分配到的join_buffer+sort_buffer总量就会很大,占用大量内存。 如何设置连接池? 建议最小值和最大值差距不要太大,避免连接反复的创建和释放,带来CPU开销。如果连接数一直比较平稳的应用,则最小值和最大值在平均线附近设置即可。如果连接数长期较高,则最小值也设置大一些。如果连接数长期较低,则最大值偏小设置。 应用程序实现JOIN 如果需要跨主机进行JOIN,跨应用进行JOIN,或者数据库不能获得较好的执行计划,都可以自己通过程序来实现JOIN。 例如:SELECT a.*,b.* FROM a,b WHERE a.col1=b.col1 AND a.col2 10 ORDER BY a.col2; 可以利用程序实现,先SELECT * FROM a WHERE a.col210 ORDER BY a.col2;--(1) 利用(1)的结果集,做循环,SELECT * FROM b WHERE b.col1=a.col1; 这样可以避免排序,可以在
您可能关注的文档
- 项目3制糖产业关键共性技术集成推广-广西科技厅.doc
- 项目5外来入侵物种-ConventiononBiologicalDiversityCBD.doc
- 项目5液压基本回路.ppt
- 项目5的部分内容.ppt
- 项目A包化学与制药工程学院材料化学专业试验室设备项目.doc
- 项目一主轴箱的拆装.doc
- 项目一汽车车身结构.ppt
- 项目一罗盘仪测量.ppt
- 项目主要污染物产生及预计排放情况-湘潭勇胜环保建材厂.doc
- 项目二_简单版_1202_乔治铭.ppt
- 2025陕西省西安市新城区公益性岗位人员招聘(16人)备考题库附答案.docx
- 2025陕西省西安市新城区公益性岗位人员招聘(16人)参考题库附答案.docx
- 2025陕西电子信息集团总部岗位招聘(8人)模拟试卷附答案.docx
- 2025陕西省人民医院工程技术人员招聘(2人)备考题库附答案.docx
- 2025陕西电子信息集团光电科技有限公司招聘笔试参考题库附答案.docx
- 2025陕西电力供应链管理有限公司招聘备考题库(15人)最新.docx
- 2025陕西电子信息集团总部岗位招聘(8人)笔试备考试题附答案.docx
- 2025陕西电子信息集团总部岗位招聘(8人)笔试参考题库附答案.docx
- 2025陕西神东煤炭集团招聘103人笔试参考题库附答案.docx
- 2025陕西煤业新型能源科技股份有限公司招聘(181人)笔试备考试题最新.docx
原创力文档


文档评论(0)