|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员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语句。
这种服务也提供了足够的监控功能来跟踪性能和使用情况,在问题发生时将发出通知并生成一定深度的分析报告。 |
|