Mysql 优化

Posted 百里屠苏phper

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 优化相关的知识,希望对你有一定的参考价值。

一:Mysql 大批量数据插入

-- test1.sql
TRUNCATE TABLE t_integer;
INSERT t_integer (test_id, test_value)
VALUES (1, 1234),
(2, 1234),
(3, 1234),
(4, 1234),
(5, 1234),
(6, 1234),
... ...
(9997, 1234),
(9998, 1234),
(9999, 1234),
(10000, 1234);
-- test2.sql
TRUNCATE TABLE t_integer;
INSERT t_integer (test_id, test_value) VALUES (1, 1234);
INSERT t_integer (test_id, test_value) VALUES (2, 1234);
INSERT t_integer (test_id, test_value) VALUES (3, 1234);
INSERT t_integer (test_id, test_value) VALUES (4, 1234);
INSERT t_integer (test_id, test_value) VALUES (5, 1234);
INSERT t_integer (test_id, test_value) VALUES (6, 1234);
... ...
INSERT t_integer (test_id, test_value) VALUES (9997, 1234);
INSERT t_integer (test_id, test_value) VALUES (9998, 1234);
INSERT t_integer (test_id, test_value) VALUES (9999, 1234);
INSERT t_integer (test_id, test_value) VALUES (10000, 1234);

以上两个脚本通过mysql命令行运行,分别耗时0.44秒和136.14秒,相差达300倍。

基于这个思路,只要将需插入的数据进行合并处理,只需要一条SQL语句 就可以轻松达到每秒1000条的设计要求了。

 

二:Mysql 常用数据查询

这里需要使用到memcache缓存,第一次从数据表读取,读完以后,存入到memcache的内存中,给她设定一个周期为一分钟的$key,

当再次访问这个接口的时候 ,就获取memcache 中的 $key 是否存在 $memcache->get($key),存在就读取缓存,否则就需要去数据库查询内容

//建立sql语句
$sql = select * from ml_type;
$key = md5($sql);

if ($memcache->get($key)) {
    //memecache缓存区间
    echo 我是读的memcache缓存;
    $result = $memcache->get($key);
} else {
    //mysql区间
    echo 我是读的mysql;
    $handle = mysql_query($sql);
    if ($handle) {
        $result = array();
        while ($array = mysql_fetch_array($handle)) {
            $result[] = array(
                id => $array[id],
                name => $array[name]
            );
        }
    }
    mysql_close();                                          //关闭mysql资源
    $memcache->set($key, $result, MEMCACHE_COMPRESSED, 5);  //MEMCACHE_COMPRESSED是常量1. 缓存20秒
}


echo <pre>;
print_r($result);
echo </pre>;

 

以上是关于Mysql 优化的主要内容,如果未能解决你的问题,请参考以下文章

如何优化C ++代码的以下片段 - 卷中的零交叉

从JVM的角度看JAVA代码--代码优化

部分代码片段

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段

linux中怎么查看mysql数据库版本

从mysql的片段中加载ListView