Cómo limitar los intentos de inicio de sesión - PHP y MySQL y CodeIgniter

Me gustaría poder limitar los intentos de inicio de sesión basados en intentos fallidos, pero tengo algunas preguntas.

¿Debo usar MySQL? (lea que podría dañar el DB)
¿Debo estrangular por usuario y en todo el sistema o solo en todo el sistema? (para evitar que la gente normal adivine las contraseñas)
¿Cómo debo calcular mi umbral? (por lo que se adapta automáticamente a los cambios / crecimiento)
¿Cómo debo recuperar este umbral? ¿Consultar / calcular en cada falla o almacenar en caché?
¿Qué debo usar para estrangular? (lea una respuesta de que sleep () podría terminar agotando el servidor)

¿Alguien tiene algún código de muestra?

Soy bastante nuevo en esto, así que agradezco la ayuda. Gracia

Respuestas a la pregunta(3)

Su respuesta a la pregunta