Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial php php内存消耗和,高并发处理,php排序。

php内存消耗和,高并发处理,php排序。

Jun 20, 2016 pm 12:49 PM


做了一个sql查询,还通过了获取的数组下标来排序。但是前辈说会有大量访问的时候这样很消耗内存,网上看了下好多说的方法是做cache,有没有其他的方法处理呢?


回复讨论(解决方案)

你的语句,不会很消耗内存。activeNum是索引就可以了。
当然有cache是最好的。

你的语句,不会很消耗内存。activeNum是索引就可以了。
当然有cache是最好的。


要是有几十万上百万的数据,每次有人访问index就去取一次不会消耗资源吗?
如果加索引的话,加什么索引好呢?这个字段是随时变化的


你的语句,不会很消耗内存。activeNum是索引就可以了。
当然有cache是最好的。


要是有几十万上百万的数据,每次有人访问index就去取一次不会消耗资源吗?
如果加索引的话,加什么索引好呢?这个字段是随时变化的

如果数据值是唯一的   就加唯一索引   否则加普通索引
如果mysql表数据多  几百万的时候  那需要考虑分表

1、没看到 数组下标来排序 的代码
2、activeNum 上应有索引(普通索引即可)
3、你知道访问数据库和访问 cache 的区别吗?
将数据库的压力转嫁到 cache 就一定合适吗?
如果有有几十万上百万的数据,那么你的 cache 策略是什么?

1、没看到 数组下标来排序 的代码
2、activeNum 上应有索引(普通索引即可)
3、你知道访问数据库和访问 cache 的区别吗?
将数据库的压力转嫁到 cache 就一定合适吗?
如果有有几十万上百万的数据,那么你的 cache 策略是什么?



activeNum 是数字型,用索引也有效吗?一直以为 索引只用在where作用的字段上,排序的字段也可以用索引吗

排序也可以用到索引,不然数据量很大,不适用索引,你数据库不是崩溃。

1、没看到 数组下标来排序 的代码
2、activeNum 上应有索引(普通索引即可)
3、你知道访问数据库和访问 cache 的区别吗?
将数据库的压力转嫁到 cache 就一定合适吗?
如果有有几十万上百万的数据,那么你的 cache 策略是什么?


目前 activeNum这个字段没有加索引。

EXPLAIN 你的查询指令

MySQL 会给你有益的建议!而不是自己想当然的说

EXPLAIN 你的查询指令

MySQL 会给你有益的建议!而不是自己想当然的说



用命令查出来貌似不能用索引,我现在想到的一个办法是,新建一个rank表把用户的id,排名根据数组取下标放到rank表里面,然后在新表里面加一个uid等于0的字段,排名那里放我写入进去的时间,每次来取排名的时候先取uid=0的时间,对比当前时间,如果大于30分钟,那么就重新去active表读取一次排名放到rank表里面。不知道这方法可行么?

possible_key 是可被使用的索引,由于你没有对 activeNum 做索引,自然就没有啦
于是 Extra 列就有了 filesort,表示用了一个临时文件来对 activeNum 进行排序

possible_key 是可被使用的索引,由于你没有对 activeNum 做索引,自然就没有啦
于是 Extra 列就有了 filesort,表示用了一个临时文件来对 activeNum 进行排序


好吧,我再捣鼓捣鼓,php在linux里面有没有区分是否线程安全呢?每个用户访问一次比如我写了一个DB调用数据库,是只引用一次,所有用户都用的这一个,还是每个人都是独立的呢?

每个人都是独立的

你可以试试 单例模式,  把结果存在静态变量中试试

如果查询的量非常大,而数据又不是实时的可以做缓存来处理.但是如果数据又要是实时的 我觉得先找出瓶颈在什么地方,普通的索引等优化这些都是基础。

谢谢大家,用临时表做缓存解决了。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1666
14
Tutorial PHP
1273
29
Tutorial C#
1252
24
Bagaimanakah seni bina rangka kerja golang mencapai pemprosesan konkurensi yang tinggi? Bagaimanakah seni bina rangka kerja golang mencapai pemprosesan konkurensi yang tinggi? Jun 02, 2024 am 09:36 AM

Dalam seni bina rangka kerja Go, strategi utama untuk meningkatkan keupayaan pemprosesan serentak yang tinggi ialah: menggunakan mekanisme konkurensi ringan Goroutine untuk melaksanakan tugas secara selari dan meningkatkan penggunaan CPU. Gunakan saluran serentak untuk pertukaran data yang selamat dan cekap antara coroutine untuk memastikan ketekalan dan keselarasan data. Laksanakan mekanisme pemprosesan tak segerak untuk mengalihkan tugas yang memakan masa ke latar belakang untuk dilaksanakan bagi mengelak daripada menyekat respons permintaan dan meningkatkan keupayaan respons.

Pemprosesan serentak tinggi dan kemahiran pengoptimuman respons permintaan pelayan Nginx Pemprosesan serentak tinggi dan kemahiran pengoptimuman respons permintaan pelayan Nginx Aug 04, 2023 pm 08:37 PM

Kemahiran pemprosesan serentak tinggi pelayan Nginx dan kemahiran pengoptimuman respons Dalam era Internet hari ini, pemprosesan serentak tinggi tapak web dan kelajuan tindak balas permintaan secara langsung mempengaruhi pengalaman pengguna. Sebagai perisian pelayan pelbagai fungsi berprestasi tinggi, Nginx boleh membantu kami mencapai pemprosesan serentak tinggi dan pengoptimuman respons permintaan. Artikel ini akan memperkenalkan beberapa teknik dan contoh kod yang biasa digunakan untuk membantu pembaca lebih memahami cara menggunakan Nginx untuk mencapai pemprosesan serentak yang tinggi dan pengoptimuman respons permintaan. 1. Menggunakan proksi terbalik fungsi proksi terbalik Nginx boleh membantu kami

PHP dan SQLite: Cara mengendalikan data besar dan konkurensi tinggi PHP dan SQLite: Cara mengendalikan data besar dan konkurensi tinggi Jul 28, 2023 am 11:25 AM

PHP dan SQLite: Cara mengendalikan data besar dan konkurensi tinggi Dalam era Internet hari ini, pengendalian data besar dan konkurensi tinggi adalah cabaran biasa yang dihadapi oleh pembangun. PHP ialah bahasa skrip bahagian pelayan yang sangat popular dan SQLite ialah pangkalan data terbenam yang ringan Gabungan mereka boleh memberikan penyelesaian yang cekap dan berskala. Artikel ini akan memperkenalkan cara menggunakan PHP dan SQLite untuk mengendalikan data besar dan konkurensi tinggi, dan melampirkan contoh kod yang berkaitan. 1. Memproses data besar Apabila kita perlu memproses sejumlah besar data, S

Cara menggunakan teknologi caching untuk menyelesaikan masalah pemprosesan konkurensi tinggi PHP Cara menggunakan teknologi caching untuk menyelesaikan masalah pemprosesan konkurensi tinggi PHP Aug 10, 2023 pm 01:30 PM

Cara menggunakan teknologi caching untuk menyelesaikan masalah pemprosesan concurrency tinggi dalam PHP Disebabkan perkembangan pesat Internet, laman web dan aplikasi hari ini menghadapi lawatan serentak yang semakin tinggi. Apabila sebilangan besar pengguna mengakses tapak web PHP pada masa yang sama, kaedah pelaksanaan skrip PHP tradisional boleh menyebabkan prestasi pelayan berkurangan, masa tindak balas menjadi lebih lama, dan juga ranap sistem berlaku. Untuk menyelesaikan masalah ini, kami boleh menggunakan teknologi caching untuk meningkatkan keupayaan pemprosesan serentak tapak web PHP. Apakah teknologi caching? Teknologi caching adalah untuk menyimpan sementara beberapa data yang kerap diakses

Menggunakan sambungan swoole dalam PHP untuk mencapai pemprosesan konkurensi yang tinggi Menggunakan sambungan swoole dalam PHP untuk mencapai pemprosesan konkurensi yang tinggi Jun 25, 2023 pm 02:30 PM

Memandangkan Internet terus berkembang, semakin banyak laman web dan aplikasi web dari pelbagai jenis. Pada masa ini, menangani konkurensi yang tinggi telah menjadi masalah yang tidak dapat dielakkan. Keselarasan tinggi bukan sahaja masalah lawatan besar, tetapi juga masalah berbilang permintaan yang dimulakan pada masa yang sama. Untuk aplikasi web, keupayaan untuk mengendalikan berbilang permintaan juga merupakan keupayaan untuk memproses secara serentak. Dalam PHP, sambungan swoole menyediakan model yang sangat baik untuk mengendalikan permintaan serentak yang tinggi. Sambungan Swoole ialah sumber terbuka dan serupa dengan lanjutan bahasa PHP.

Cara menggunakan kunci teragih untuk meningkatkan keupayaan pemprosesan serentak tinggi PHP Cara menggunakan kunci teragih untuk meningkatkan keupayaan pemprosesan serentak tinggi PHP Aug 13, 2023 pm 03:51 PM

Cara menggunakan kunci teragih untuk meningkatkan keupayaan pemprosesan serentak tinggi PHP Dalam aplikasi Internet hari ini, keupayaan pemprosesan serentak tinggi adalah isu utama. Apabila bilangan pengguna meningkat dan perniagaan berkembang, cara mengendalikan permintaan serentak dengan berkesan telah menjadi satu cabaran yang mesti diselesaikan oleh setiap pembangun. Dalam aplikasi PHP, kami boleh menggunakan kunci teragih untuk meningkatkan keupayaan pemprosesan serentak tinggi sistem. Artikel ini akan memperkenalkan konsep dan prinsip kunci teragih, dan menunjukkan cara menggunakan kunci teragih dalam aplikasi PHP melalui contoh kod. 1. Konsep dan prinsip kunci teragih Kunci teragih boleh difahami

Membina aplikasi pengundian dalam talian menggunakan Node.js dan Redis: Cara mengendalikan konkurensi tinggi Membina aplikasi pengundian dalam talian menggunakan Node.js dan Redis: Cara mengendalikan konkurensi tinggi Jul 29, 2023 pm 09:17 PM

Membina aplikasi pengundian dalam talian menggunakan Node.js dan Redis: Cara menangani konkurensi tinggi Dengan perkembangan Internet, semakin banyak aplikasi perlu mengendalikan situasi konkurensi tinggi. Permohonan undian dalam talian ialah senario keselarasan tinggi yang biasa. Pengguna menyerahkan sejumlah besar permintaan undian dalam tempoh masa yang singkat. Aplikasi perlu dapat memproses permintaan ini dengan cepat dan mengekalkan konsistensi data. Artikel ini akan memperkenalkan cara menggunakan Node.js dan Redis untuk membina aplikasi undian dalam talian yang sangat serentak. Pengenalan kepada Redis Redis ialah pangkalan data nilai kunci berasaskan memori, jadi

Cara menangani konkurensi tinggi dan beban tinggi dalam pembangunan API backend PHP Cara menangani konkurensi tinggi dan beban tinggi dalam pembangunan API backend PHP Jun 17, 2023 am 10:12 AM

Dengan perkembangan pesat Internet mudah alih, semakin banyak aplikasi perlu menyokong pemprosesan yang tinggi dan beban tinggi, dan PHP, sebagai bahasa skrip sumber terbuka, telah menjadi arus utama pembangunan aplikasi laman web, terutamanya dalam bidang Internet . Walau bagaimanapun, apabila PHP digunakan untuk pembangunan API, ia menghadapi beberapa kesukaran, termasuk cara mengendalikan konkurensi tinggi dan beban tinggi. Artikel ini akan memperkenalkan beberapa amalan terbaik untuk menangani isu ini. 1. Penskalaan Mendatar Penskalaan mendatar ialah kaedah biasa untuk bertindak balas terhadap konkurensi dan beban yang tinggi dengan menambah bilangan pelayan atau

See all articles