兰色精灵 发表于 2015-1-16 20:11:54

发布优化MySQL拔出办法的五个妙招

据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。  以下是触及到拔出表格的查询的5种改善办法:
  1)利用LOADDATAINFILE从文本下载数据这将比利用拔出语句快20倍。
  2)利用带有多个VALUES列表的INSERT语句一次拔出几行这将比利用一个单行拔出语句快几倍。调剂bulk_insert_buffer_size变量也能进步(向包括行的表格中)拔出的速率。
  3)能够对myisam表并行拔出Concurrent_insert体系变量能够被设置用于修正concurrent-insert处置。该变量默许设置为1。假如concurrent_insert被设置为0,并行拔出就被禁用。假如该变量被设置为2,在表的末了能够并行拔出,即使该表的某些行已被删除。
  4)利用拔出提早
  假如你的客户不克不及或无需守候拔出完成的时分,这招很有效。当你利用MySQL存储,并按期运转必要很长工夫才干完成的SELECT和UPDATE语句的时分,你会发明这类情形很罕见。当客户利用拔出提早,服务器立即前往,假如表没有被其他线程挪用,则行会排队守候被拔出。利用拔出提早的另外一个优点就是从多个客户拔出的情形会被绑定并纪录在统一个block中。这将比处置多个自力的拔出要快很多。
  5)拔出之前将表锁定(只针对非事件处置型的表)
  这将进步数据库功能,由于索引缓冲区只是在一切的拔出语句完成后才对磁盘举行一次革新。一般情形下,有几个拔出语句就会有几次索引缓冲区革新。假如你能够用一个拔出语句完成一切行的拔出,则无需利用显式锁定语句。
  要想更快地对事件型表拔出,你应当利用STARTTRANSACTION和COMMIT语句,而不是LOCKTABLES语句。
这种服务也提供了足够的监控功能来跟踪性能和使用情况,在问题发生时将发出通知并生成一定深度的分析报告。

愤怒的大鸟 发表于 2015-1-18 18:28:50

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

再见西城 发表于 2015-1-24 12:02:14

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

再现理想 发表于 2015-2-1 10:00:19

代替了原来VB式的错误判断。比Oracle高级不少。

第二个灵魂 发表于 2015-2-20 04:16:53

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

兰色精灵 发表于 2015-3-6 16:33:43

语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!

透明 发表于 2015-3-13 04:40:12

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

简单生活 发表于 2015-3-20 13:09:38

分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
页: [1]
查看完整版本: 发布优化MySQL拔出办法的五个妙招